web:api

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
web:api [2023/03/06 11:05] – [Principes REST] jcheronweb:api [2023/04/25 02:42] (Version actuelle) – [Liens] jcheron
Ligne 12: Ligne 12:
   - un paramètre comme jeton d’authentification   - un paramètre comme jeton d’authentification
  
-=== URI ===+=== 1- URI ===
  
 REST se base sur les URI pour identifier une ressource. Une API doit définir ses URI (et donc ses URL) de manière précise, en tenant compte des contraintes de lisibilité de REST, en prenant en compte la hiérarchie des ressources et la sémantique des URL : REST se base sur les URI pour identifier une ressource. Une API doit définir ses URI (et donc ses URL) de manière précise, en tenant compte des contraintes de lisibilité de REST, en prenant en compte la hiérarchie des ressources et la sémantique des URL :
Ligne 33: Ligne 33:
 **Affichage d'un client** **Affichage d'un client**
 <sxh ;gutter:false> <sxh ;gutter:false>
-NOK : https://myapi.com/clients/87+NOK : https://myapi.com/clients/display/87
 OK : https://myapi.com/clients/87 OK : https://myapi.com/clients/87
 </sxh> </sxh>
Ligne 48: Ligne 48:
 OK : https://myapi.com/clients/87/commands/1568 OK : https://myapi.com/clients/87/commands/1568
 </sxh> </sxh>
 +
 +=== 2 - Méthodes HTTP ===
 +Utilisation des verbes HTTP existants (méthodes) plutôt que d’inclure l’opération dans l’URI de la ressource.
 +
 +^Action ^ Méthode (verbe) ^
 +|Créer (create) | POST |
 +|Afficher (read) | GET |
 +|Mettre à jour (update) | PUT |
 +|Supprimer (delete) | DELETE |
 +
 +
 +**Créer un client**
 +<sxh ;gutter:false>
 +NOK : GET https://myapi.com/clients/create
 +OK : POST https://myapi.com/clients
 +</sxh>
 +
 +**Afficher un client**
 +<sxh ;gutter:false>
 +NOK : GET https://myapi.com/clients/display/87
 +OK : GET https://myapi.com/clients/87
 +</sxh>
 +
 +**Mettre à jour un client**
 +<sxh ;gutter:false>
 +NOK : POST https://myapi.com/clients/update/87
 +OK : PUT https://myapi.com/clients/87
 +</sxh>
 +
 +**Supprimer un client**
 +<sxh ;gutter:false>
 +NOK : GET https://myapi.com/clients/delete/87
 +OK : DELETE https://myapi.com/clients/87
 +</sxh>
 +
 +=== 3 - Représentation de ressources ===
 +
 +La réponse HTTP reçue est une représentation de ressource, et non la ressource elle même :
 +
 +En fonction de la requête effectuée et de son en-tête **Accept**, plusieurs formmats de réponses sont envisageables :
 +  * JSON
 +  * XML
 +  * HTML
 +  * CSV
 +  * etc...
 +
 +**Exemple**
 +
 +<sxh ;gutter:false>
 +GET /clients
 +Host: myapi.com
 +Accept: application/xml
 +</sxh>
 +
 +
 +=== 4 - Liens = relation entre ressources ===
 +Les liens d'une ressource indiquent les relations qu'elle peut avoir avac d'autres. Pour indiquer la nature de la relation, l’attribut **rel** doit être spécifié sur tous les liens.
 +L’IANA donne une liste de relation parmi lesquelles :
 +
 +  * contents
 +  * edit
 +  * next
 +  * last
 +  * payment
 +  * etc...
 +
 +[[https://www.iana.org/assignments/link-relations/link-relations.xhtml|Liste complète sur le site de l’IANA]]
 +
 +=== 5 - Authentification par jeton ===
 +
 +REST étant par principe **stateless** (pas de session HTTP par exemple), l'authentification se fait par jeton d’authentification.
 +
 +Chaque requête est envoyée avec un jeton (token) passé en paramètre **GET** de la requête ou dans les headers. Ce jeton temporaire est obtenu en envoyant une première requête d’authentification puis en le combinant avec les requêtes.
 +
 +[[https://jwt.io/|JWT]] est l'un des standards d'authentification les plus utilisés.
 +
 +===== Liens =====
 +  * [[https://api-platform.com/|API Platform]]
 +  * [[https://jamstack.org/|JamStack]]
 +  * [[https://www.openapis.org/|OpenAPI]]
 +  * [[https://graphql.org/|GraphQL]]
 +  * [[https://strapi.io/|Headless CMS Strapi]]
 +
  • web/api.1678097104.txt.gz
  • Dernière modification : il y a 2 ans
  • de jcheron