Latest web development tutorials

Node.js peticiones GET / POST

En muchas escenas, se requiere que nuestros servidores para lidiar con el navegador del usuario, tales como el envío de formularios.

Formulario enviado al servidor generalmente utilizan peticiones GET / POST.

En este capítulo vamos a introducir Node.js GET / POST solicita a todos.


GET solicitud para obtener el contenido

Dado que las solicitudes GET se incrustan directamente en el camino, la URL es la ruta completa de la solicitud, incluyendo el? Volver parte, para que pueda analizar manualmente el contenido de vuelta como un parámetro de la petición GET.

Node.js analizan las funciones del módulo url proporcionan esta funcionalidad.

var http = require('http');
var url = require('url');
var util = require('util');

http.createServer(function(req, res){
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end(util.inspect(url.parse(req.url, true)));
}).listen(3000);

El acceso en el navegador http://localhost:3000/user?name=w3c&[email protected] name=w3c&[email protected]? A continuación, vea los resultados devueltos:

w3cnodejs

Obtener el contenido de solicitud POST

Publicar demanda todo el contenido en el cuerpo de la petición, http.ServerRequest propiedad no tiene un contenido del cuerpo de la solicitud, debido a que el cuerpo de la solicitud de espera de transmisión puede ser una tarea que consume tiempo.

Tales como la carga de archivos, y muchas veces es posible que no tenga que pasar por alto el contenido de peticiones cuerpo, solicitud POST malicioso se consumen en gran medida los recursos del servidor, por defecto todos Node.js no resolverá el cuerpo de la solicitud, cuando la necesita, tiene que manualmente hacer.

var http = require('http');
var querystring = require('querystring');
var util = require('util');

http.createServer(function(req, res){
    var post = '';     //定义了一个post变量,用于暂存请求体的信息

    req.on('data', function(chunk){    //通过req的data事件监听函数,每当接受到请求体的数据,就累加到post变量中
        post += chunk;
    });

    req.on('end', function(){    //在end事件触发后,通过querystring.parse将post解析为真正的POST请求格式,然后向客户端返回。
        post = querystring.parse(post);
        res.end(util.inspect(post));
    });
}).listen(3000);