Какие параметры «Res» и «REQ» в экспресс -функциях?

StackOverflow https://stackoverflow.com/questions/4696283

  •  11-10-2019
  •  | 
  •  

Вопрос

В следующей экспресс -функции:

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);.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top