Mi chiedo se c'è qualche preferenza nell'uso request.body o request.params in node.js l'invio di dati dal client al server?C'è qualche differenza tra l'utilizzo di request.body o request.params in node.js?
risposta
È 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 :)
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.
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
penso che le richieste di eliminazione in genere non contengono corpi. Google App Engine lo applica, almeno. – bgenchel