Est-il contraire aux meilleures pratiques d'utiliser une requête POST
pour lire les données? Y a-t-il des exceptions à cela? par exemple. Demandes d'authentification où vous devez POST
données pour effectuer une action de lecture.
J'ai un appel d'API qui nécessite beaucoup de paramètres et c'est essentiellement une action Lire. Je ne peux pas utiliser la demande GET
car elle peut atteindre la limite d'URI.
J'ai entendu dire que c'était contraire aux meilleures pratiques REST pour utiliser une requête POST
pour lire les données et je préfère fortement suivre les meilleures pratiques car l'API est censée être publique accessible aux clients de l'entreprise.
Si je ne fais pas cela, comment dois-je concevoir mon API pour traiter correctement ces cas?
Une chose que nous avons fait là où je travaille est d'avoir une API de service de "stockage". Fondamentalement, vous POST un objet JSON au service, et il renvoie un UUID. Vous envoyez l'UUID en tant que paramètre de requête lors de tout appel d'API ultérieur et il obtiendra les paramètres/données du stockage C'est particulièrement pratique si vous effectuez plusieurs appels avec les mêmes données, car vous ne devez les envoyer qu'une seule fois.
Après avoir lu quelques questions similaires, j'ai réalisé que REST n'est pas réellement conçu pour résoudre ce problème. J'ai donc décidé d'opter pour JSON-RPC plutôt REST qui offre plus de flexibilité et semble être la bonne solution pour ce genre de problèmes.
Oui, vous pouvez le faire fonctionner au moins en utilisant WCF, c'est un peu différent dans MVC et Web API où vous ajoutez des attributs à des méthodes comme [GET] [POST]
etc..
J'ai entendu dire que c'était contraire aux meilleures pratiques REST pour utiliser une demande de lecture des données POST et je préfère fortement suivre les meilleures pratiques car l'API est censé être accessible au public pour les clients de l'entreprise.
Bien sûr, c'est une mauvaise pratique d'utiliser POST pour obtenir des données en tant que POST est pour créer des ressources dans le système sans les obtenir).
Meilleures pratiques pour REST
J'ai un appel d'API qui nécessite beaucoup de paramètres et c'est essentiellement une action de lecture. Je ne peux pas utiliser la demande GET car elle peut atteindre la limite d'URI.
Utilisez un tableau pour envoyer des paramètres ou créez des objets si vos paramètres sont liés
Pour améliorer la réponse de TMT au lieu d'utiliser un service de stockage pour stocker les UUID par rapport aux paramètres de demande. Vous pouvez à la place écrire une API sans état en utilisant jetons Web JSON . Cela éliminera le problème de la gestion du stockage, permettra la réutilisation et la mise en cache.
Le flux ressemblera à ceci:
Cette méthode ne nécessite aucun stockage.
La mise en œuvre de l'API réelle ne nécessite aucune considération particulière.
Garantit que les jetons ne sont pas altérés en cours de route.
Puisqu'il n'y a pas d'État, il n'y a pas lieu de s'inquiéter de la corruption des données. La mise en cache est beaucoup plus facile. L'application à plusieurs API est triviale et peut être effectuée sans supervision d'un autre membre de l'équipe.
Gardez à l'esprit que si votre charge utile est trop volumineuse, JWT peut l'être aussi. Assurez-vous que la longueur de votre URL ne dépasse pas 2000 caractères. J'ai essayé avec un JSON 1.9K et j'ai obtenu un JWT de 1695 caractères (qui devrait être plus que suffisant IMO)