Vert-X + Groovy: aujourdâhui: le POST
Aujourdâhui ce sera court: âcomment rĂ©pondre Ă une requĂȘte de type POSTâ.
Request body
Avant toute chose, il faut activer la capacité de Vert-x à lire le body
au moment de la requĂȘte. Il faut donc ajouter ceci dans votre code:
Dans ce cas, nous activons la possibilitĂ© pour lâensemble des routes, mais il est possible de le faire que pour une partie, par exemple ici, uniquement pour les âroutes en dessousâ de /api/humans
:
GĂ©rer le POST
Notre code est trĂšs simple:
- Nous avons eu juste Ă activer la lecture du ârequest bodyâ:
router.route().handler(BodyHandler.create())
- Et ensuite Ă le lire et le transformer en une chaĂźne json:
jsonSlurper.parseText(context.getBodyAsString())
Vous pouvez tester facilement votre route:
curl -H "Content-Type: application/json" -X POST -d '{"firstName":"Bob","lastName":"Morane"}' http://localhost:8080/api/humans
Et vous devriez obtenir quelque chose comme ceci:
{"firstName":"Bob","id":42,"lastName":"Morane"}
Json selon Vert-x
Jusquâici, jâutilisais les capacitĂ©s de Groovy Ă gĂ©rer le Json. Mais sachez que Vert-X propose aussi lâoutillage json nĂ©cessaire par le biais du package io.vertx.core.json.Json
, donc ajouter un import dans votre code: import io.vertx.core.json.Json
. Puis continuons Ă coder.
Créez une classe Human
:
puis créez la route suivante:
Json.decodeValue
permet de âmapperâ votre json sur une instance de classeJson.encodePrettily
permet de transformer votre instance en une âjolieâ json string
Vous pouvez tester facilement votre route:
curl -H "Content-Type: application/json" -X POST -d '{"firstName":"Bob","lastName":"Morane"}' http://localhost:8080/api/2/humans
Et vous devriez obtenir quelque chose comme ceci:
{
"id" : 76,
"firstName" : "Bob",
"lastName" : "Morane"
}
Je vous laisse découvrir seuls comment faire un PUT
ou un DELETE
(la doc et les exemples sont trÚs bien faits). La prochaine fois nous verrons comment simplifier notre code grùce à quelques spécificités de Groovy.
Bon Dimanche :)
Tweet