В следующей экспресс-функции:
app.get('/user/:id', function(req, res){
res.send('user' + req.params.id);
});
Что такое req и res? Что они обозначают, что они значат и что они делают?
Спасибо!
В следующей экспресс-функции:
app.get('/user/:id', function(req, res){
res.send('user' + req.params.id);
});
Что такое req и res? Что они обозначают, что они значат и что они делают?
Спасибо!
req - это объект, содержащий информацию о HTTP-запросе, вызвавшем событие. В ответ на req вы используете res для отправки желаемого HTTP-ответа.
Эти параметры могут быть названы как угодно. Вы можете изменить этот код на этот, если он более понятен:
app.get('/user/:id', function(request, response){
response.send('user ' + request.params.id);
});
Редактировать:
Скажем, у вас есть этот метод:
app.get('/people.json', function(request, response) { });
Запрос будет объект с такими свойствами (просто назвать несколько):
request.url, который будет "/people.json" когда это конкретное действие будет "/people.json"request.method, который в этом случае будет "GET", отсюда и app.get().request.headers, содержащий такие элементы, как request.headers.accept, которые вы можете использовать, чтобы определить, какой браузер сделал запрос, какие ответы он может обработать, способен ли он понимать сжатие HTTP, так далее.request.query (например /people.json?foo=bar приведет к request.query.foo, содержащей строку "bar"). Чтобы ответить на этот запрос, вы используете объект ответа для создания своего ответа. Чтобы расширить пример people.json:
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 send method to push that string
// of people JSON back to the browser in response to this request:
response.send(peopleJSON);
});
Я заметил одну ошибку в ответе Дейва Уорда (возможно, недавнее изменение?):
Параметры строки запроса находятся в request.query, а не request.params. (См. fooobar.com/questions/12522/...)
request.params по умолчанию заполняется значением любых "совпадений компонентов" в маршрутах, т.е.
app.get('/user/:id', function(request, response){
response.send('user ' + request.params.id);
});
и, если вы настроили express, чтобы использовать его bodyparser (app.use(express.bodyParser());) также с POST'ed formdata. (См. Как получить параметры запроса POST?)
Запрос и ответ.
Чтобы понять req, попробуйте console.log(req); ,
req запрашивает сервер.
res отправляет ответ пользователю.