Na seguinte função Express:
app.get('/user/:id', function(req, res){
res.send('user' + req.params.id);
});
O que são req
e res
? O que eles representam, o que eles significam e o que eles fazem?
Obrigado!
Na seguinte função Express:
app.get('/user/:id', function(req, res){
res.send('user' + req.params.id);
});
O que são req
e res
? O que eles representam, o que eles significam e o que eles fazem?
Obrigado!
Respostas:
req
é um objeto que contém informações sobre a solicitação HTTP que gerou o evento. Em resposta a req
, você usa res
para enviar de volta a resposta HTTP desejada.
Esses parâmetros podem ter qualquer nome. Você pode alterar esse código para isso se for mais claro:
app.get('/user/:id', function(request, response){
response.send('user ' + request.params.id);
});
Editar:
Digamos que você tenha este método:
app.get('/people.json', function(request, response) { });
A solicitação será um objeto com propriedades como estas (apenas para citar alguns):
request.url
, que será "/people.json"
quando essa ação específica for acionadarequest.method
, que será "GET"
neste caso, daí a app.get()
chamada.request.headers
, contendo itens como request.headers.accept
, que você pode usar para determinar que tipo de navegador fez a solicitação, que tipo de respostas ele pode manipular, se é capaz de entender ou não a compactação HTTP etc.request.query
(por exemplo /people.json?foo=bar
, resultaria em request.query.foo
conter a string "bar"
).Para responder a essa solicitação, use o objeto de resposta para criar sua resposta. Para expandir no people.json
exemplo:
app.get('/people.json', function(request, response) {
// We want to set the content-type header so that the browser understands
// the content of the response.
response.contentType('application/json');
// Normally, the data is fetched from a database, but we can cheat:
var people = [
{ name: 'Dave', location: 'Atlanta' },
{ name: 'Santa Claus', location: 'North Pole' },
{ name: 'Man in the Moon', location: 'The Moon' }
];
// Since the request is for a JSON representation of the people, we
// should JSON serialize them. The built-in JSON.stringify() function
// does that.
var peopleJSON = JSON.stringify(people);
// Now, we can use the response object's send method to push that string
// of people JSON back to the browser in response to this request:
response.send(peopleJSON);
});
req
e res
estrutura, é descrito no docs Express: req
: expressjs.com/en/api.html#req , res
: expressjs.com/en/api.html#res
Percebi um erro na resposta de Dave Ward (talvez uma alteração recente?): Os paramaters de string de consulta estão dentro request.query
, não request.params
. (Consulte https://stackoverflow.com/a/6913287/166530 )
request.params
por padrão, é preenchido com o valor de qualquer "correspondência de componente" nas rotas, ou seja,
app.get('/user/:id', function(request, response){
response.send('user ' + request.params.id);
});
e, se você configurou o express para usar seu bodyparser ( app.use(express.bodyParser());
) também com os dados do formulário do POST. (Consulte Como recuperar parâmetros de consulta POST? )
Pedido e resposta.
Para entender req
, experimente console.log(req);
.
req
=="request"
//res
=="response"