2011-01-14 8 views

Odpowiedz

202

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().
  • Tablica nagłówków HTTP w 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.
  • Tablica parametrów ciągu zapytania, jeśli były, w 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); 
}); 
+1

Nie rozumiem. Czy możesz pokazać przykład odpowiedzi? I jaki będzie wynik? – expressnoob

+0

możesz użyć zwijania, aby zobaczyć odpowiedź z nagłówkami – generalhenry

+2

Zaktualizowano odpowiedź, wyjaśniając więcej. Czy to ma większy sens? –

4

Żądanie i odpowiedź.

Aby zrozumieć wymagane, wypróbuj console.log (req);

20

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?)

Powiązane problemy