Latest web development tutorials

node.js trasy

Chcemy zapewnić routing żądania URL i inne parametry GET i POST potrzebami, a następnie dane te muszą trasy do wykonywania odpowiedniego kodu.

Dlatego musimy przejrzeć żądanie HTTP, wyodrębnić i GET URL żądania parametru / POST. Funkcja ta powinna być częścią trasy lub serwera (lub nawet jako funkcja samego modułu) jest naprawdę warte odwiedzenia, ale tutaj jest wstępnie zaplanowane na naszym serwerze HTTP.

Wszystkie dane musimy są zawarte w obiekcie żądania, obiekt jako onRequest () pierwszy argument do funkcji wywołania zwrotnego jest przekazywana. Jednak w celu rozwiązania tych danych, potrzebujemy dodatkowych modułów node.js, które są url i moduł ciągu kwerendy.

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

Oczywiście, możemy również użyć modułu ciągu kwerendy do analizowania ciała parametrów żądania POST, pokażemy później.

Teraz dochodzimy do onRequest () funkcji, aby dodać trochę logiki znaleźć żądań przeglądarki ścieżki URL:

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;

Cóż, nasza aplikacja może teraz ścieżka URL o rozróżnienie poszczególnych wniosków - co pozwoliło nam korzystać z trasy (nie jest jeszcze ukończony) na żądanie na ścieżkę URL jest odwzorowywany do obsługi odniesienia.

Chcemy budować aplikacje, co oznacza, że ​​wniosek / start i / upload może użyć innego kodu do obsługi. Później widzimy, jak zintegrować te elementy razem.

Teraz możemy zapisać trasę i utwórz plik o nazwie router.js, dodać co następuje:

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

exports.route = route;

Jak widać, ten kod nie zrobił nic, ale teraz powinno być. Dodaj więcej logiki w przeszłości, przyjrzyjmy się, jak zintegrować trasy i serwerów.

Trzeba mieć świadomość, że nie jest to serwer routingu i wykorzystać je efektywnie. Oczywiście, mogą być zakodowane w ten sposób jest związany z zależnością na serwerze, ale doświadczenie innych języków programowania, powiedział nam, że będzie to bardzo bolesna sprawa, więc użyjemy iniekcji zależność Dodaj trasą stosunkowo luźno moduł.

Po pierwsze, pozwala rozwinąć funkcję startu serwera (), tak że funkcja routingu jako argument w przeszłości server.js kod pliku jest następujący

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;

W tym samym czasie, będzie się rozszerzać odpowiednio index.js, więc funkcja trasowania może być wstrzyknięty do serwera:

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

server.start(router.route);

Tutaj mijamy funkcja wciąż nie ma nic zrobić.

Jeśli teraz uruchomić aplikację (index.js węzłów, zawsze należy z wiersza poleceń), a następnie poprosić o adres URL, widać aplikację odpowiadającą informacji wyjściowych, co wskazuje, że nasz serwer HTTP używa już moduł trasowania i zwróci ścieżka przechodzi do szlaku:

$ node index.js
Server has started.

Wyjście zostało usunięte na odpowiedniej części bardziej przykry wniosek /favicon.ico.

dostęp przez przeglądarkę http://127.0.0.1:8888/ wyniki wyjściowe są następujące: