2010-07-07 37 views
5

Miré la API pero no pude encontrarla.node.js POST request

¿Dónde/Cómo debo poner los datos en una solicitud POST en client.request() o client.request("POST" ,...)?

Respuesta

8

Quizás debería mirar más de cerca entonces.

Esto es directamente de la documentación de la API Node.js:

request_headers es opcional. Los encabezados de solicitud adicionales pueden ser agregados internamente por Nodo. Devuelve un objeto ClientRequest .

Recuerde incluir el encabezado Content-Length si planea enviando un cuerpo. Si planea transmitir el cuerpo, quizás configure Transferencia de codificación: fragmentada.

NOTA: la solicitud no está completa. Este método solo envía el encabezado de la solicitud. Es necesario llamar al request.end() para finalizar la solicitud y recuperar la respuesta. (Este suena complicado pero proporciona una oportunidad para el usuario para transmitir un cuerpo al servidor con request.write().)

request.write() es para el envío de datos.

por lo que no es así (más o menos):

var rq = client.request('POST', 'http://example.org/', {'Content-Length': '1024'}); 
var body = getMe1024BytesOfData(); 

rq.write(body); 
rq.end(); 

Este código es sólo aquí para obtener el concepto de ancho. NO lo he probado de ninguna manera.

+0

también se puede hacer rq.end (cuerpo) si que se adapte mejor a su estilo – mm2001

+0

Es cierto, pero me gustaría mantener las cosas con diferentes propósitos aparte: write() es para output y end() es para ... bueno ... final. – selfawaresoup

+0

Esto parece haber cambiado en v0.3.6. y parece muy diferente [ahora en v0.4.7] (http://nodejs.org/docs/v0.4.7/api/http.html#http.request) –

1

Para solicitudes más sencillas del cliente puede usar el módulo request. Se encarga de todo el trabajo duro y tiene una API simple.

0

También puede usar Requestify, un cliente HTTP realmente genial y muy simple que escribí para nodeJS + que admite el almacenamiento en caché.

Sólo hacer lo siguiente para la ejecución de una solicitud POST:

var requestify = require('requestify'); 

requestify.post('http://example.com', { 
    hello: 'world' 
}) 
.then(function(response) { 
    // Get the response body (JSON parsed or jQuery object for XMLs) 
    response.getBody(); 
});