Bruno đ
Bruno est un client qui permet de faciliter l'envoie de requĂȘtes HTTP. C'est un bon outil pour tester les requĂȘtes HTTP rapidement.
Installez l'outil sur votre ordinateur personnel avant de commencer cette recette. Bruno est aussi prĂ©installĂ© sur les postes du CĂGEP.
Pour les besoins de la recette, nous allons utiliser quelques API différentes, dont REST Countries. Créez vous un compte, et obtenez une clé d'API.
REST Countries fournit 1000 requĂȘtes gratuites Ă leur API par mois. C'est amplement suffisant pour nos besoins, mais c'est assez peu pour vous avertir d'ĂȘtre minimalement parcimonieux!
Collections đâ
Généralement, on garde une collection par source de données, ou par projet.
Créez une collection nommée REST Countries.
Envoyer une requĂȘte âĄïžâ
Le premier objectif sera d'effectuer une recherche simple dans la liste des pays du monde.
CrĂ©ez une requĂȘte GET avec cette recherche :
https://api.restcountries.com/countries/v5?q=uni
Renommez la requĂȘte "Recherche" pour mieux la retrouver plus tard.
Vous risquez d'obtenir un résultat semblable à celui-ci :
{
"errors": [
{
"message": "Authorization key required.",
"code": "authKeyMissing"
}
]
}
En-tĂȘtes đ©â
L'API nous rĂ©pond qu'il manque la clĂ© d'API. Nous devons donc la lui fournir. Essayez d'y arriver par vous-mĂȘme en consultat la documentation de l'API.
Details
Solution
Dans l'onglet Headers, ajoutez l'entrée suivante :| Name | Value | Description |
|---|---|---|
| Authorization | Bearer rc_live_et_le_rest_de_votre_cle_d_api |
RĂ©essayez la requĂȘte. Vous devriez voir la rĂ©ponse JSON dans la partie de droite.
RĂ©sultat ⏠ïžâ
Souvent, ce n'est qu'une partie trÚs précise d'une réponse d'API qui nous intéresse, plutÎt que l'objet au complet.
Pour vous aider Ă mieux consommer la rĂ©ponse, nous vous recommandons de sĂ©lectionner JSON et de cocher l'option Preview dans les option de visualisation, oĂč vous voyez un icĂŽne d'oeil.
La vue vous permet d'explorer pas à pas les différents niveaux de la réponse.
Rendre le tout plus propre đ§čâ
Quelques Ă©lĂ©ments peuvent ĂȘtre amĂ©liorĂ©s, surtout si vous comptez partager les collections avec d'autres membres de l'Ă©quipe.
Authentificationâ
Vous remarquerez que toutes les requĂȘtes vers REST Countries nĂ©cessitent d'inclure la clĂ© d'API dans le header. C'est possible de spĂ©cifier Ă une collection d'inclure la clĂ© dans les headers.
On peut aller dans ... sur nom de la collection > Settings > Auth > Bearer Token dans la liste déroulante
Insérer simplement la clé d'API (sans Bearer avant).
Pour bien tester, n'oubliez pas d'enlever l'en-tĂȘte dans la requĂȘte HTTP qui a Ă©tĂ© créée plus tĂŽt.
Les prochaines sections de cette recette concernent moins l'exemple de REST Countries, et plutĂŽt davantage les API dĂ©veloppĂ©s par vous-mĂȘme, en gĂ©nĂ©ral.
Environnementsâ
C'est souvent nĂ©cessaire d'ĂȘtre capable de passer rapidement d'un environnement de dĂ©veloppement Ă un environnement de production. Entre ces 2 environnements, l'url du serveur (ex : http://localhost:5196 vs https://api.monsite.org), certaines clĂ© d'API, etc.
- Dans Bruno, en haut Ă droite, trouvez "No Environment", et cliquez dessus.
- Dans l'onglet Collection, cliquez sur Create.
- Comme nom, choisissez par exemple "Développement" ou "Production".
Les onglets Variables et Secrets accomplissent la mĂȘme chose : vous fournir des clĂ©s-valeur auquelles vous pouvez vous rĂ©fĂ©rer. Variables est pour les donnĂ©es qui ne sont pas sensibles (ex : url du serveur), et Secrets est pour les donnĂ©es sensibles (ex : clĂ©s d'API).
Définissons la clé-valeur suivante dans Variables :
| Name | Value | Description |
|---|---|---|
| server_url | https://api.restcountries.com |
N'oubliez pas de sauvegarder! Ctrl + S
De retour dans la requĂȘte de recherche, créée plus tĂŽt, on peut remplacer https://api.restcountries.com/countries/v5?q=uni par {{server_url}}/countries/v5?q=uni.
On devine qu'il sera ensuite possible de crĂ©er d'autres environnements, et de leur dĂ©finir les mĂȘme clĂ©s, mais avec des valeurs diffĂ©rentes.
SpĂ©cification OpenAPIâ
Certaines API (pas REST Countries malheureusement) fournissent une spĂ©cification OpenAPI qui est un standard de documentation des requĂȘtes HTTP. En gros, ça vous Ă©vite d'avoir Ă Ă©crire Ă la main toutes les requĂȘtes dans Bruno.
Par exemple, GitHub fournit l'entiÚreté de la spécification de ses appels HTTP au format OpenAPI, disponible ici.
Vous pouvez simplement créer une nouvelle collection vide, dans les options de la collection (...), sélectionner l'option OpenAPI, et coller l'url du lien ci-haut. Vous vous rendrez compte que GitHub fournit beaucoup de points d'entrée vers leur API.
Cette fonctionnalité vous permet aussi de détecter lorsque des points d'entrée ont été modifiés, et bien plus.
D'ailleurs, certains frameworks permettent par défaut de générer une spécification OpenAPI, en se basant sur ce que les controlleurs reçoivent et renvoient.
C'est notemment le cas des projets .NET que vous utilisez dans vos cours de web. La spécification est souvent disponible par défaut via localhost:#_DE_PORT/openapi/v1.json essayez le dans votre cours de web pour impressionner votre prof!.