W poniższym funkcji Express:Jakie są parametry "res" i "req" w funkcjach Express?
app.get('/user/:id', function(req, res){
res.send('user ' + req.params.id);
});
Co jest req
i res
? Co one oznaczają, co one oznaczają i co robią?
W poniższym funkcji Express:Jakie są parametry "res" i "req" w funkcjach Express?
app.get('/user/:id', function(req, res){
res.send('user ' + req.params.id);
});
Co jest req
i res
? Co one oznaczają, co one oznaczają i co robią?
req
to obiekt zawierający informacje o żądaniu HTTP, które wywołało zdarzenie. W odpowiedzi na req
używasz res
, aby odesłać żądaną odpowiedź HTTP.
Parametry te można dowolnie nazwać. Można zmienić ten kod do tego, czy jest to bardziej oczywiste:
app.get('/user/:id', function(request, response){
response.send('user ' + request.params.id);
});
Edit:
Powiedzmy, że masz tą metodą:
app.get('/people.json', function(request, response) { });
wniosek zostanie obiekt o właściwościach podobnych do nich (podobnie żeby wymienić tylko kilka):
request.url
, który będzie "/people.json"
kiedy to szcze uruchomiona jest duża akcja:request.method
, która będzie w tym przypadku "GET"
, stąd wywołanie app.get()
.request.headers
zawierająca takie elementy, jak request.headers.accept
, za pomocą których można określić, jakiego rodzaju przeglądarka wysłała żądanie, z jakimi rodzajami odpowiedzi może sobie poradzić, niezależnie od tego, czy jest w stanie zrozumieć kompresję HTTP itp.request.params
(np. /people.json?foo=bar
spowoduje, że request.params.foo
będzie zawierał ciąg znaków "bar"
).Aby odpowiedzieć na to żądanie, należy użyć obiektu odpowiedzi do zbudowania odpowiedzi. Aby rozwinąć na przykład 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 would probably come 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);
});
Żądanie i odpowiedź.
Aby zrozumieć wymagane, wypróbuj console.log (req);
zauważyłem jeden błąd w odpowiedzi Dave Ward (być może ostatnią zmianą): W PARAMATERS ciągu zapytania są w request.query
nie request.params
. (Patrz https://stackoverflow.com/a/6913287/166530)
request.params
domyślnie jest wypełniona wartości wszelkich „meczów składowych” w trasach, tj
app.get('/user/:id', function(request, response){
response.send('user ' + request.params.id);
});
i, jeśli skonfigurowano express wykorzystać swoje bodyparser (app.use(express.bodyParser());
) również z POST "ed formdata. (Zobacz How to retrieve POST query parameters?)
Nie rozumiem. Czy możesz pokazać przykład odpowiedzi? I jaki będzie wynik? – expressnoob
możesz użyć zwijania, aby zobaczyć odpowiedź z nagłówkami – generalhenry
Zaktualizowano odpowiedź, wyjaśniając więcej. Czy to ma większy sens? –