Latest web development tutorials

Node.js Route

Wir wollen die URL-Anfrage-Routing und andere GET und POST-Parameter erforderlich sind, dann diese Notwendigkeit, um Daten den entsprechenden Code auszuführen.

Deshalb müssen wir die HTTP-Anforderung, extrahieren Sie die URL anzuzeigen und GET / POST-Parameter Anfrage. Diese Funktion sollte Teil der Route oder dem Server (oder sogar als eine Funktion des Moduls selbst) ist wirklich einen Besuch wert, aber hier ist vorläufig geplant für unseren HTTP-Server sein.

Alle Daten, die wir brauchen, sind im Request-Objekt enthalten, das Objekt als onRequest () erstes Argument an die Callback-Funktion übergeben wird. Aber um diese Daten zu lösen, müssen wir zusätzliche Node.JS Module, die URL und Abfragezeichenfolgeflag Modul sind.

                   url.parse(string).query
                                           |
           url.parse(string).pathname      |
                       |                   |
                       |                   |
                     ------ -------------------
http://localhost:8888/start?foo=bar&hello=world
                                ---       -----
                                 |          |
                                 |          |
              querystring(string)["foo"]    |
                                            |
                         querystring(string)["hello"]

Natürlich können wir auch das Abfragezeichenfolgeflag Modul verwenden, um die Körper der POST-Request-Parameter zu analysieren, werden wir später zeigen.

Nun kommen wir zu onRequest () Funktion, um eine gewisse Logik in den URL-Pfad Browser-Anforderungen finden:

var http = require("http");
var url = require("url");

function start() {
  function onRequest(request, response) {
    var pathname = url.parse(request.url).pathname;
    console.log("Request for " + pathname + " received.");
    response.writeHead(200, {"Content-Type": "text/plain"});
    response.write("Hello World");
    response.end();
  }

  http.createServer(onRequest).listen(8888);
  console.log("Server has started.");
}

exports.start = start;

Nun, unsere Anwendung kann nun URL-Pfad zwischen den verschiedenen Anforderungen zu unterscheiden fordert - was uns die Route nutzen dürfen (noch nicht abgeschlossen) auf die Anforderung an den URL-Pfad zu dem Referenz Handler zugeordnet ist.

Wir wollen Anwendungen zu erstellen, was bedeutet, dass eine Anforderung aus dem Verzeichnis / beginnen und / Upload können unterschiedliche Codes verwenden zu behandeln. Später werden wir sehen, wie diese Elemente miteinander zu integrieren.

Jetzt können wir den Weg zu schreiben, und eine Datei mit dem Namen router.js erstellen, fügen Sie die folgenden Schritte aus :

function route(pathname) {
  console.log("About to route a request for " + pathname);
}

exports.route = route;

Wie Sie sehen können, hat dieser Code nicht alles tun, aber jetzt sollte es sein. Fügen Sie mehr Logik in der Vergangenheit, schauen wir uns an, wie Routing und Server zu integrieren.

Wir sollten uns bewusst sein, dass es ein Routing-Server und nutzen sie effektiv. Natürlich können wir auf diese Weise zu einer Abhängigkeit von dem Server gebunden ist hartcodiert werden, aber die Erfahrungen anderer Programmiersprachen sagte uns, es wäre eine sehr schmerzhafte Sache sein, so werden wir Dependency Injection route verwenden relativ lose Modul.

Lassen Sie uns zunächst den Server start () Funktion zu erweitern, so dass die Routing - Funktion als Argument in der Vergangenheit Datei Code server.js ist wie folgt

var http = require("http");
var url = require("url");

function start(route) {
  function onRequest(request, response) {
    var pathname = url.parse(request.url).pathname;
    console.log("Request for " + pathname + " received.");

    route(pathname);

    response.writeHead(200, {"Content-Type": "text/plain"});
    response.write("Hello World");
    response.end();
  }

  http.createServer(onRequest).listen(8888);
  console.log("Server has started.");
}

exports.start = start;

Zur gleichen Zeit wird erweitern wir entsprechend index.js, so Routing-Funktion kann in den Server eingespritzt werden:

var server = require("./server");
var router = require("./router");

server.start(router.route);

Hier geben wir die Funktion hat immer noch nichts getan.

Wenn Sie nun die Anwendung zu starten (Knoten index.js, immer daran denken, die Kommandozeile), und fordern dann eine URL, werden Sie die Anwendung sehen den Ausgabeinformationen entsprechen, die das unseren HTTP-Server zeigt bereits ein Routing-Modul verwendet, und wird darum ersuchen der Pfad wird auf die Route geleitet:

$ node index.js
Server has started.

Ausgabe wurde über den betreffenden Teil des ärgerlicher /favicon.ico Anfrage entfernt.

Browser Zugang http://127.0.0.1:8888/, Ausgabeergebnisse sind wie folgt: