Proveďte základní požadavek HTTP s Node.js

V současné době pracuji na přidání testování na straně klienta do Mozilla Developer Network (MDN). Používám Intern, rozhraní WebDriver API založené na JavaScriptu, které vytvořil můj bývalý zaměstnavatel SitePen. MDN používá svou vlastní přihlašovací službu Persona už roky, a protože mnoho klíčových funkcí MDN vyžaduje přihlášení (a následné vytvoření účtu), bylo důležité, abych měl způsob, jak získat testovací přihlašovací údaje. Existuje služba, která tyto přihlašovací údaje poskytuje, ale to vyžaduje, abych provedl požadavek HTTP z pomocníka testu.

Obvykle používám oblíbený modul požadavků, který je k dispozici na npm, ale chtěl jsem se vyhnout externím závislostem mimo testovací knihovnu. Vždy jsem slýchal, že řešení požadavků HTTP pomocí nativního API Node.js byla noční můra, ale po nějakém zkoumání jsem zjistil, že to, co jsem potřeboval, bylo ve skutečnosti neuvěřitelně snadné. Zde je zmenšený, extrémně jednoduchý příklad vytvoření požadavku HTTP pomocí Node.js:

var http = require('http');

function getTestPersonaLoginCredentials(callback) {

    return http.get({
        host: 'personatestuser.org',
        path: '/email'
    }, function(response) {
        // Continuously update stream with data
        var body = '';
        response.on('data', function(d) {
            body += d;
        });
        response.on('end', function() {

            // Data reception is done, do whatever with it!
            var parsed = JSON.parse(body);
            callback({
                email: parsed.email,
                password: parsed.pass
            });
        });
    });

},

Jedinou neobvyklou částí je potřeba zřetězit příchozí datový tok, ale kromě toho je proces ve skutečnosti docela jednoduchý. Samozřejmě můžete přidat další kontroly stavových kódů odpovědí a podobně, ale existuje jednoduchý příklad vytvoření požadavku HTTP s nativním kódem Node.js!