Eu acho que você está confundindo o uso do response
objeto com o do request
.
O response
objetivo é enviar a resposta HTTP de volta ao cliente que está chamando, enquanto você deseja acessar o corpo do request
. Veja esta resposta que fornece algumas orientações.
Se você estiver usando JSON válido e o estiver postando Content-Type: application/json
, poderá usar o bodyParser
middleware para analisar o corpo da solicitação e colocar o resultado em request.body
sua rota.
var express = require('express')
, app = express.createServer();
app.use(express.bodyParser());
app.post('/', function(request, response){
console.log(request.body); // your JSON
response.send(request.body); // echo the result back
});
app.listen(3000);
Teste ao longo das linhas de:
$ curl -d '{"MyKey":"My Value"}' -H "Content-Type: application/json" http://127.0.0.1:3000/
{"MyKey":"My Value"}
Atualizado para o Express 4+
O analisador de corpo foi dividido em seu próprio pacote npm após a v4, requer uma instalação separada npm install body-parser
var express = require('express')
, bodyParser = require('body-parser');
var app = express();
app.use(bodyParser.json());
app.post('/', function(request, response){
console.log(request.body); // your JSON
response.send(request.body); // echo the result back
});
app.listen(3000);
Atualização para Express 4.16+
A partir do release 4.16.0, um novo express.json()
middleware está disponível.
var express = require('express');
var app = express();
app.use(express.json());
app.post('/', function(request, response){
console.log(request.body); // your JSON
response.send(request.body); // echo the result back
});
app.listen(3000);
request.body.MyKey
toString()
no objeto. Dê uma olhada nos documentos do nóconsole.log
, pois isso inspeciona o objeto e retorna uma representação de sequência.console.log('request =' + JSON.stringify(request.body))
console.log()
irá automaticamente restringir um objeto (viautil.inspect()
), para que isso funcione:console.log("with request", request.body);
Para Express v4 +
instale o analisador de corpo a partir do npm.
https://www.npmjs.org/package/body-parser#installation
fonte
Às vezes, você não precisa de bibliotecas de terceiros para analisar o JSON do texto. Às vezes, tudo o que você precisa é o seguinte comando JS, tente primeiro:
fonte
body
Para aqueles que estão recebendo um objeto vazio em
req.body
Eu tinha esquecido de fazer
headers: {"Content-Type": "application/json"}
o pedido. Mudá-lo resolveu o problema.fonte
text/json
e recebendo{}
como resposta. Supervisão total da minha parte. Muito útil.@ Daniel Thompson menciona que ele havia esquecido de adicionar {"Content-Type": "application / json"} na solicitação . Ele conseguiu alterar a solicitação, no entanto, nem sempre é possível alterar solicitações (estamos trabalhando no servidor aqui).
No meu caso, eu precisava forçar o tipo de conteúdo: text / plain a ser analisado como json.
Se você não pode alterar o tipo de conteúdo da solicitação, tente usar o seguinte código:
Em vez de usar express.json () globalmente, prefiro aplicá-lo somente quando necessário, por exemplo, em uma solicitação POST:
fonte
Este app.use (express.json) agora permitirá que você leia o objeto JSON da postagem recebida
fonte