2013-08-12 12 views

risposta

4

È possibile adattare i dati di più (diversi) nel corpo che nella URL. Puoi passare qualsiasi stringa (caratteri speciali) nel corpo, mentre la codifica nell'URL ti renderebbe vulnerabile allo stato 414 (Request-URI Too Long). Ed è molto più facile usare il corpo quando si passano array e oggetti complessi :)

5

Direi che una buona pratica sarebbe che dovresti usare params quando fai un get, ma usa body per post, put ed elimina.

un campione ottenere

app.get "/api/items/:id", (req, res) -> 
    itemController.getItem req.params.id, (item, error) =>  
    if !error 
     res.send 'item': item 
    else 
     res.send 'error: error 

un post di esempio

app.post "/api/items", (req, res) -> 
    itemController.saveItem req.body, (item, error) =>  
    if !error 
     res.send 'item': item 
    else 
     res.send 'error: error 

Si potrebbe aggiungere convalida pure, ma questo è stato come ho scritto tutti i miei punti finali.

+0

penso che le richieste di eliminazione in genere non contengono corpi. Google App Engine lo applica, almeno. – bgenchel

2

Sono passati più di 4 anni da quando questa domanda è stato chiesto, tuttavia, vorrei ancora carillon per assicurarsi che qualcun altro inciampo su questo post ha più informazioni per capire meglio questo concetto.

req.body e req.params server di due scopi diversi.

si usa req.body quando è necessario inviare i dati a un server (per memorizzare o qualcosa), come in una richiesta "POST" a un server. Per esempio, controllare il seguente:

State facendo una richiesta "POST" per MongoDB per salvare un post sul blog. In questo scenario, vorrai ottenere i dati che arrivano nel corpo della richiesta e inviarli al db. Qui si usa req.body

app.post("/blog", function(req, res){ 
    var data = req.body.blog; 
    .... // code to send data to the db 
    .... 
}); 

req.params viene utilizzato quando si desidera estrarre un "param" dall'URL. diciamo che vuoi estrarre un "id" che fa parte dell'URL. Per esempio "id" è il numero nel seguente URL dopo domande stackoverflow.com/questions/18187424/

app.get("/xyz/questions/:id", function(req, res){ 
    var useId = req.params.id; 
    ... 
    ... 
}); 

Speranza, aiuta.

Grazie, Kartik