Latest web development tutorials

Node.js маршрут

Мы хотим, чтобы обеспечить маршрутизацию запроса URL и другие параметры GET и POST требуется, то их необходимо маршрутизации данных для выполнения соответствующего кода.

Поэтому мы должны рассматривать запрос HTTP, извлечь URL и GET запрос параметра / POST. Эта функция должна быть частью маршрута или сервера (или даже как функция самого модуля) действительно стоит изучить, но здесь это предварительно запланировано на наш HTTP-сервер.

Все данные, которые мы должны включены в объект запроса, объект, как onRequest () первый аргумент функции обратного вызова передается. Но для того, чтобы разрешить эти данные, нам нужны дополнительные Node.js модули, которые являются URL и модуль QueryString.

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

Конечно, мы можем также использовать модуль для разбора строки запроса тело параметры запроса POST, будет показано далее.

Теперь мы подходим к функции onRequest (), чтобы добавить некоторую логику, чтобы найти запросы браузера 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;

Ну, наше приложение теперь может URL путь с просьбой провести различие между различными запросами, - что позволило нам использовать маршрут (еще не завершено) на запрос к URL-путь отображается в референтную обработчика.

Мы хотим, чтобы создавать приложения, что означает, что запрос от / запуска и / загрузки может использовать другой код для обработки. Позже мы увидим, как интегрировать эти элементы вместе.

Теперь мы можем записать маршрут, а также создать файл с именем router.js, добавьте следующее:

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

exports.route = route;

Как вы можете видеть, этот код ничего не делал, но сейчас это должно быть. Добавьте больше логики в прошлом, давайте рассмотрим, как интегрировать маршрутизацию и серверов.

Мы должны знать, что есть сервер маршрутизации и использовать их эффективно. Конечно, мы можем быть жестко закодированный таким образом, связан с зависимостью от сервера, но опыт других языков программирования сказал нам, что это было бы очень болезненным, поэтому мы будем использовать зависимость инъекций Добавить маршрут относительно свободно модуль.

Во- первых, давайте разложим функцию запуска сервера (), так что функция маршрутизации в качестве аргумента в прошлом, server.js код файла выглядит следующим образом

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;

В то же время, мы будем расширять соответственно index.js, так что функция маршрутизации может быть введен в сервер:

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

server.start(router.route);

Здесь мы передаем функции до сих пор ничего не сделано.

Если теперь запустить приложение (узел index.js, всегда помните командную строку), а затем запросить URL, вы увидите приложение, соответствующее выходной информации, которая указывает, что наш HTTP-сервер уже использует модуль маршрутизации, и запросит путь передается маршрут:

$ node index.js
Server has started.

Выход был удален по соответствующей части запроса более раздражающей /favicon.ico.

Браузер http://127.0.0.1:8888/ доступа, выходные результаты являются следующие: