У наступній функції Express:
app.get('/user/:id', function(req, res){
res.send('user' + req.params.id);
});
Що таке req
і res
? Що вони означають, що вони означають, і що вони роблять?
Дякую!
У наступній функції Express:
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()
дзвінок.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);
});
req
і res
структури, описано в експрес - документи: req
: expressjs.com/en/api.html#req , res
: expressjs.com/en/api.html#res
Я помітив одну помилку у відповіді Дейва Варда (можливо, нещодавня зміна?): Параметри рядка запиту є 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. (Див. Розділ Як отримати параметри запиту POST? )
req
=="request"
//res
=="response"