introduction
Dans cet article, je souhaite parler des problèmes que j'ai rencontrés lors du processus d'intégration avec l'API via le protocole HTTP et partager mon expérience pour les résoudre.
Lors du développement d'applications frontales (Mobile / Web), vous constatez souvent que l'API sur le backend n'a pas encore été implémentée. Il faut attendre le développeur sur le backend lorsqu'il fournit les requêtes nécessaires, en lui rappelant constamment de lui-même. Une autre situation n'est pas rare lorsque les requêtes http nécessaires sont déjà là, mais elles sont implémentées très mal et de manière tordue.
Peut-être que je n'aurais pas écrit cet article. Mais cela m'a paru étonnant que tous les exemples de mauvaise implémentation d'API ci-dessous me soient parvenus dans un seul projet, en même temps!
Dans ce projet, je développe une application mobile dans Flutter en utilisant le package Retrofit , qui m'aide à réduire le temps et le code que je dois écrire moi-même, générant automatiquement un code significatif. J'utilise également Insomnia pour le contrôle initial des requêtes avant de les implémenter dans le code.
La version vidéo est disponible ici https://www.youtube.com/watch?v=oj-i1IBejcI&t=8s
Avant d'entrer dans le vif du sujet, j'aimerais souligner qu'avant de devenir développeur mobile, j'ai travaillé en tant que développeur Full-Stack pendant plus de 5 ans. Et je comprends à quel point il est important de mettre en œuvre une belle API pour le frontend, avec laquelle il est facile et agréable à intégrer et sûr en cas de modifications futures de l'API.
Alors, commençons.
Architecture non RESTful
La première déception a été le fait que l'architecture API n'est pas implémentée dans le style RESTful. Honnêtement, je ne me souviens pas quand j'ai dû faire face à l'intégration de telles API non REST.
REST REpresentational State Transfer. RESTful — API, HTTP. REST . , (, tasks, customers, etc.). , HTTP, CRUD , .. GET, POST, PUT, DELETE.
RESTful API:
API — REST — :
, , POST . type, . , , , - endpoint’ - if-else switch type .
, , RESTful, , - Retrofit, API
Header Accept: application/json
Insomnia, , .
Insomnia, , Preview json , json . , Retrofit Dart , .
- , . : “ ”.
Insomnia . Preview json, . Header , Content-Type , text/html, charset-utf-8, Preview json.
, , application/json text/html, - Retrofit Dart .
Accept Header , , “ - json”. , .. Header Accept.
, :
Retrofit, “”
, , . , Retrofit . , , , :
, , .
JSON keys case types
json:
, . :
Dart camelCase . json camelCase , Retrofit , , json. JsonKey, snake_case, — UPPER_CASE_SNAKE_CASE:
— , case type, , .. json b Dart . API, API , .
, . “ ”. , , , . , , , json . Insomnia, . , , — . Insomnia , , — :
, json, ? json? ? ?
Je sais que le serveur est écrit en PHP. Messieurs qui programment en PHP, pourriez-vous écrire dans les commentaires comment cela est possible?
Conclusion
Maintenant, j'éprouve les sentiments opposés. D'une part, je suis contrarié de devoir intégrer une API aussi moche, d'autre part, j'attends déjà avec impatience le prochain cas, qui montrera comment vous pouvez autrement défigurer l'API.
J'aimerais connaître votre expérience d'intégration avec l'API et les problèmes que vous avez rencontrés.
Merci. Bon codage!