Какие параметры «Res» и «REQ» в экспресс -функциях?
Вопрос
В следующей экспресс -функции:
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"
Когда это конкретное действие запускаетсяrequest.method
, которые будут"GET"
В этом случае, следовательноapp.get()
вызов.- Множество заголовков HTTP в
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's 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
. Анкет (Видеть https://stackoverflow.com/a/6913287/166530 )
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);
.