En la siguiente función Express:
app.get('/user/:id', function(req, res){
res.send('user' + req.params.id);
});
¿Qué son req
y res
? ¿Qué representan, qué quieren decir y qué hacen?
¡Gracias!
En la siguiente función Express:
app.get('/user/:id', function(req, res){
res.send('user' + req.params.id);
});
¿Qué son req
y res
? ¿Qué representan, qué quieren decir y qué hacen?
¡Gracias!
Respuestas:
req
es un objeto que contiene información sobre la solicitud HTTP que provocó el evento. En respuesta a req
, usted usa res
para devolver la respuesta HTTP deseada.
Esos parámetros se pueden nombrar cualquier cosa. Puede cambiar ese código a esto si está más claro:
app.get('/user/:id', function(request, response){
response.send('user ' + request.params.id);
});
Editar:
Digamos que tienes este método:
app.get('/people.json', function(request, response) { });
La solicitud será un objeto con propiedades como estas (solo por nombrar algunas):
request.url
, que será "/people.json"
cuando se active esta acción particularrequest.method
, que será "GET"
en este caso, de ahí la app.get()
llamada.request.headers
, que contiene elementos como request.headers.accept
, que puede usar para determinar qué tipo de navegador realizó la solicitud, qué tipo de respuestas puede manejar, si es capaz de comprender la compresión HTTP, etc.request.query
(por ejemplo /people.json?foo=bar
, resultaría en request.query.foo
contener la cadena "bar"
).Para responder a esa solicitud, utiliza el objeto de respuesta para generar su respuesta. Para ampliar el people.json
ejemplo:
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
y res
estructura, que se describe en la documentación expresas: req
: expressjs.com/en/api.html#req , res
: expressjs.com/en/api.html#res
Noté un error en la respuesta de Dave Ward (¿quizás un cambio reciente?): Los parámetros de cadena de consulta están dentro request.query
, no request.params
. (Ver https://stackoverflow.com/a/6913287/166530 )
request.params
por defecto se llena con el valor de cualquier "coincidencia de componentes" en las rutas, es decir
app.get('/user/:id', function(request, response){
response.send('user ' + request.params.id);
});
y, si ha configurado express para usar su bodyparser ( app.use(express.bodyParser());
) también con datos POST'ed. (Consulte ¿Cómo recuperar los parámetros de consulta POST? )
req
=="request"
//res
=="response"