Aller au contenu principal

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.

attention

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 :

NameValueDescription
AuthorizationBearer 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.

astuce

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.

  1. Dans Bruno, en haut Ă  droite, trouvez "No Environment", et cliquez dessus.
  2. Dans l'onglet Collection, cliquez sur Create.
  3. 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 :

NameValueDescription
server_urlhttps://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.

astuce

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!.