W następującej funkcji Express:
app.get('/user/:id', function(req, res){
res.send('user' + req.params.id);
});
Jakie są req
i res
? Co oznaczają, co mają na myśli i co robią?
Dzięki!
W następującej funkcji Express:
app.get('/user/:id', function(req, res){
res.send('user' + req.params.id);
});
Jakie są req
i res
? Co oznaczają, co mają na myśli i co robią?
Dzięki!
Odpowiedzi:
req
to obiekt zawierający informacje o żądaniu HTTP, które wywołało zdarzenie. W odpowiedzi req
użyjesz res
do odesłania żądanej odpowiedzi HTTP.
Te parametry można nazwać dowolnymi. Możesz zmienić ten kod na ten, jeśli jest bardziej przejrzysty:
app.get('/user/:id', function(request, response){
response.send('user ' + request.params.id);
});
Edytować:
Powiedz, że masz tę metodę:
app.get('/people.json', function(request, response) { });
Żądanie będzie obiektem o takich właściwościach (żeby wymienić tylko kilka):
request.url
, która nastąpi "/people.json"
po uruchomieniu tej konkretnej akcjirequest.method
, który będzie "GET"
w tym przypadku, stąd app.get()
połączenie.request.headers
, zawierająca elementy request.headers.accept
, których można użyć, aby określić, jakiego rodzaju przeglądarka wysłała żądanie, jakiego rodzaju odpowiedzi może obsłużyć, czy jest w stanie zrozumieć kompresję HTTP itp.request.query
(np. /people.json?foo=bar
Spowoduje request.query.foo
zawarcie ciągu "bar"
).Aby odpowiedzieć na to żądanie, użyj obiektu odpowiedzi do zbudowania odpowiedzi. Aby rozwinąć na people.json
przykładzie:
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
i res
strukturę, jest to opisane w Dokumentach ekspresowych: req
: expressjs.com/en/api.html#req , res
: expressjs.com/en/api.html#res
Zauważyłem jeden błąd w odpowiedzi Dave'a Warda (być może ostatnią zmianę?): Parametry łańcucha zapytania są request.query
, nie request.params
. (Zobacz https://stackoverflow.com/a/6913287/166530 )
request.params
domyślnie jest wypełniona wartością dowolnego „dopasowania elementów” w trasach, tj
app.get('/user/:id', function(request, response){
response.send('user ' + request.params.id);
});
a jeśli skonfigurowałeś express do korzystania z jego bodyparser ( app.use(express.bodyParser());
) również z formdata POST. (Zobacz Jak pobrać parametry zapytania POST? )
req
=="request"
//res
=="response"