Développer une API Rest avec NodeJS, Express et MongoDB: #4 Le body et les paramètres

sidali

Sid Ali BENTIFRAOUINE

Posted on September 18, 2022

Développer une API Rest avec NodeJS, Express et MongoDB: #4 Le body et les paramètres

le body

Je sais démarrer mon serveur, comment recevoir des requetes, comment les arranger selon le contexte et l'ordre donné.
GET/POST/PUT/DELETE.

Maintenant il me faut un moyen de faire passer de l'information à mes requetes.

Dans la partie #3, on a eu un petit teasing des params. Flashback:

app.delete("/champions/:id", (request, response) => {
// ...etc...
Enter fullscreen mode Exit fullscreen mode

Et bien maintenant, je vais aller plus loin. Vers l'infini et au-dela 🚀

Lorsque je recois une requete, j'ai accès dans mon callback (la petite fonction dont les deux premiers parametre sont request et response).

Le response n'est pas sorcier, on l'utilise depuis le début de ce cours.

Le request nous interesse beaucoup plus pour cette partie.
Amusons-nous à faire un console.log de ce que contient l'objet request.body:

app.post("/champions", (request, response) => {
  console.log(request.body)
  response.send({
    message: "Je veux bien créer un champion, mais c'est quoi son nom?",
  })
})
Enter fullscreen mode Exit fullscreen mode

Bon, rien d'interessant, allez je modifie ma requete sur Postman:

Image description

Bon j'ai que ca: {}, c'est normal je n'ai rien envoyé dans le body. Voilà comment je dois faire:

Image description

Voilà qui est beaucoup mieux: { name: 'Graves', description: 'Champion cancer' }

Et là je peux enchainer et utiliser mon body comme bon me semble request.body.name ou request.body.description.

lesparams

app.get("/champions/:id", (request, response) => {
  console.log(request.params)
  response.send({
    message: `T'as demandé le champion ${request.params.id} ?`,
  })
})
Enter fullscreen mode Exit fullscreen mode

Image description

Je peux aussi faire ca comme suit pour les enchainer:

app.get("/champions/:id/day/:day", (request, response) => {
  console.log(request.params.id)
  console.log(request.params.day)
  response.send({
    message: `T'as demandé le champion ${request.params.id}
 ?`,
  })
})
Enter fullscreen mode Exit fullscreen mode

Image description

les query params

app.get("/meteo", (request, response) => {
  console.log(request.query)
  response.send({
    message: `T'as demandé la meteo d'${request.query.start} à ${request.query.end} ?`,
  })
})
Enter fullscreen mode Exit fullscreen mode

Ce qui donne:

Image description

Je peux tout mélanger si je veux

app.get("/meteo/:ville", (request, response) => {
  console.log("Body", request.body)
  console.log("Params", request.params)
  console.log("Query", request.query)

  response.send({
    reponse: `Tu m'as dis ${body.message}`,
    ville: request.params.ville,
    meteo: `T'as demandé la meteo d'${request.query.start} à ${request.query.end} ?`,
  })
})
Enter fullscreen mode Exit fullscreen mode

Image description

La difference entre les trois

Le body est généralement utilisé pour donner de la donnée, comme des infos de création ou de mise à jour.

Tandis que les params vont plus etre utilisés pour dire, "je veux la donnée du champion avec l'id: 1", "je veux supprimer ca",

Les query, ce serait plus: donne moi les évenement de "telle date à telle date".

💖 💪 🙅 🚩
sidali
Sid Ali BENTIFRAOUINE

Posted on September 18, 2022

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related