Na seguinte função Express:
app.get('/user/:id', function(req, res){
res.send('user' + req.params.id);
});
O que são reqe 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 reqe 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 respara 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.fooconter a string "bar").Para responder a essa solicitação, use o objeto de resposta para criar sua resposta. Para expandir no people.jsonexemplo:
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);
});
reqe resestrutura, é 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"