Latest web development tutorials

ruta Node.js

Queremos proporcionar el encaminamiento de petición de URL y otros parámetros GET y POST de requerido, entonces estos necesidad de datos de ruta para llevar a cabo el código correspondiente.

Por lo tanto, tenemos que ver la solicitud HTTP, extraer la URL y GET solicitud de parámetros / POST. Esta función debe ser parte de la ruta o el servidor (o incluso como una función del módulo en sí) es realmente vale la pena explorar, pero aquí se ha programado provisionalmente para nuestro servidor HTTP.

Todos los datos que necesitamos están incluidos en el objeto de la petición, se pasa el objeto como onRequest () primer argumento de la función de devolución de llamada. Sin embargo, con el fin de resolver estos datos, necesitamos módulos Node.js adicionales, que son URL y módulo de cadena de consulta.

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

Por supuesto, también podemos utilizar el módulo de cadena de consulta para analizar el cuerpo de los parámetros de la petición de la POST, demostraremos más adelante.

Ahora llegamos a la función onRequest () para añadir un poco de lógica para encontrar las peticiones del navegador ruta 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;

Bueno, nuestra aplicación puede ahora ruta URL solicitada para distinguir entre diferentes peticiones - que nos permitió utilizar la ruta (aún no terminado) a la petición de que la ruta URL está asignada al controlador de referencia.

Queremos construir aplicaciones, lo que significa que una petición del / de inicio y / carga puede usar código diferente de manejar. Más adelante veremos cómo integrar estos elementos juntos.

Ahora podemos escribir la ruta, y crear un archivo llamado router.js, añada lo siguiente:

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

exports.route = route;

Como se puede ver, este código no se ha hecho nada, pero por ahora debe ser. Añadir más lógica en el pasado, vamos a ver cómo integrar de enrutamiento y servidores.

Debemos ser conscientes de que hay un servidor de enrutamiento y usarlos con eficacia. Por supuesto, podemos ser difíciles codificados de esta forma se une a una dependencia en el servidor, pero la experiencia de otros lenguajes de programación nos dijeron que sería una cosa muy dolorosa, por lo que vamos a utilizar la inyección de dependencia Añadir ruta relativamente suelta módulo.

En primer lugar, vamos a ampliar la función de arranque del servidor (), por lo que la función de enrutamiento como un argumento en el pasado, server.js código del archivo es el siguiente

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;

Al mismo tiempo, vamos a ampliar en consecuencia index.js, por lo que la función de enrutamiento puede ser inyectado en el servidor:

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

server.start(router.route);

A continuación, se pasa a la función aún no se ha hecho nada.

Si ahora se inicia la aplicación (index.js nodo, recuerde siempre que la línea de comandos), y luego solicita una dirección URL, verá la aplicación correspondiente a la información de salida, lo que indica que nuestro servidor HTTP ya está utilizando un módulo de enrutamiento, y solicitará la ruta de acceso se pasa a la ruta:

$ node index.js
Server has started.

La producción ha sido retirado por la parte pertinente de la solicitud /favicon.ico más molesto.

acceso Browser http://127.0.0.1:8888/, los resultados de salida son los siguientes: