Dans mon entreprise, nous commençons à nous intéresser aux API Web pour accéder à nos données et les mettre à jour, dans un premier temps pour les partenaires, puis probablement pour le public à l'avenir. Pour l'instant, la forme que prendra l'API (par exemple SOAP, REST, RPC) est totalement ouverte et nous n'avons encore pris aucune décision. Je suis donc intéressé par les exemples d'API Web que les gens considèrent comme bonnes et par les raisons qui vous poussent à penser ainsi.
Ce qui m'intéresse, c'est de connaître l'avis de personnes utilisant différents langages (nous sommes susceptibles de proposer l'API à des personnes utilisant un certain nombre de plates-formes, notamment .NET, Java, ActionScript et JavaScript) sur les API Web que vous considérez comme de bons exemples et avec lesquelles vous avez eu de bonnes expériences.
Quelques points que j'aimerais aborder :
-
Préférez-vous les services de type SOAP ou ceux de type REST/RPC ? Je pense que les personnes disposant d'un support de plate-forme (par exemple, .NET, Java) préféreront les services SOAP et que les personnes utilisant des langages sans support de plate-forme préféreront les autres, mais j'aimerais valider cette hypothèse.
-
Vous souciez-vous de savoir si une API est réellement RESTful ou s'il s'agit d'un simple GET/POST HTTP de type RPC ? Si oui, pourquoi vous en préoccupez-vous ? Est-il plus important qu'une API se décrive correctement (par exemple, ne prétendez pas être RESTful si elle est de type RPC) que de savoir si elle est réellement l'une des deux ?
-
Nous devons vérifier qui utilise le service. J'ai étudié l'authentification Amazon S3 qui utilise un identifiant public et un jeton privé qui est utilisé pour hacher les paramètres de la requête dans un jeton de vérification (ceci est également similaire à flickr). Avez-vous déjà utilisé ce type d'authentification et comment s'est-elle déroulée ? Y a-t-il des algorithmes de hachage que vous trouvez problématiques (c'est-à-dire non pris en charge par votre plateforme) ? Préférez-vous envoyer le hachage dans un en-tête HTTP ou dans l'URI ?
-
Comment gérer les versions ? Est-ce une bonne idée d'avoir un
/v1/
afin que les versions futures puissent être ajoutées en parallèle, ou bien feriez-vous quelque chose de différent, comme indiquer la version dans les données utiles de la demande ou dans la requête ? Pendant combien de temps pensez-vous que la version d'une API que vous avez construite sera prise en charge (par exemple, si la version 2 était introduite, quelle serait votre attente concernant la durée de vie de la version 1) ?
Toute autre opinion et tout autre point à couvrir seraient également utiles.
Je reste délibérément vague sur le type d'API que nous mettons en œuvre, car je cherche à obtenir des conseils généraux sur ce que les gens considèrent comme de bonnes API et de bons mécanismes de mise en œuvre, afin que cet article et ses réponses soient utiles à davantage de personnes à l'avenir.
Note : J'ai cherché et je n'ai pas trouvé de question générique à ce sujet - elles semblent toutes spécifiques à un certain type d'API - mais si c'est un doublon, merci de me le faire savoir. De plus, si la question doit être considérée comme un wiki communautaire (je pense que les gens doivent être crédités pour les réponses, donc je n'en ai pas fait un), veuillez me le faire savoir et je la modifierai.