Nous lançons une nouvelle API REST et je voulais des commentaires de la communauté sur les meilleures pratiques concernant la façon dont nous devrions formater les paramètres d'entrée:
À l'heure actuelle, notre API est très centrée sur JSON (ne renvoie que JSON). Le débat de savoir si nous voulons / devons renvoyer XML est une question distincte.
Comme notre sortie API est centrée sur JSON, nous avons emprunté un chemin où nos entrées sont un peu centrées sur JSON et j'ai pensé que cela pourrait être pratique pour certains mais bizarre en général.
Par exemple, pour obtenir quelques détails sur les produits où plusieurs produits peuvent être extraits en même temps, nous avons actuellement:
http://our.api.com/Product?id=["101404","7267261"]
Faut-il simplifier cela comme:
http://our.api.com/Product?id=101404,7267261
Ou bien avoir une entrée JSON à portée de main? Plus de douleur?
Nous pouvons vouloir accepter les deux styles, mais cette flexibilité provoque-t-elle réellement plus de confusion et de maux de tête (maintenabilité, documentation, etc.)?
Un cas plus complexe est celui où nous voulons offrir des entrées plus complexes. Par exemple, si nous voulons autoriser plusieurs filtres sur la recherche:
http://our.api.com/Search?term=pumas&filters={"productType":["Clothing","Bags"],"color":["Black","Red"]}
Nous ne voulons pas nécessairement mettre les types de filtres (par exemple productType et color) en tant que noms de requête comme ceci:
http://our.api.com/Search?term=pumas&productType=["Clothing","Bags"]&color=["Black","Red"]
Parce que nous voulions regrouper toutes les entrées de filtre.
En fin de compte, est-ce vraiment important? Il est probable qu'il y ait tellement d'utilitaires JSON que le type d'entrée n'a pas beaucoup d'importance.
Je sais que nos clients JavaScript effectuant des appels AJAX à l'API peuvent apprécier les entrées JSON pour leur faciliter la vie.
[]
syntaxe n'est pas toujours prise en charge (et bien qu'elle soit courante, elle peut même violer la spécification URI). Certains serveurs HTTP et langages de programmation préféreront simplement répéter le nom (par exempleproductType=value1&productType=value2
).