Лучшее руководство по Node.js маршрут в 2024 году. В этом руководстве вы можете изучить 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/ доступа, выходные результаты являются следующие: