W następującej funkcji Express:
app.get('/user/:id', function(req, res){
res.send('user' + req.params.id);
});
Jakie są reqi 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ą reqi res? Co oznaczają, co mają na myśli i co robią?
Dzięki!
Odpowiedzi:
reqto obiekt zawierający informacje o żądaniu HTTP, które wywołało zdarzenie. W odpowiedzi requżyjesz resdo 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=barSpowoduje request.query.foozawarcie ciągu "bar").Aby odpowiedzieć na to żądanie, użyj obiektu odpowiedzi do zbudowania odpowiedzi. Aby rozwinąć na people.jsonprzykł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);
});
reqi resstrukturę, 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"