API fea

Introducción

En este artículo, quiero hablar sobre los problemas que encontré en el proceso de integración con la API a través del protocolo HTTP y compartir mi experiencia para resolverlos.





Al desarrollar aplicaciones frontend (móvil / web), a menudo se encuentra con el hecho de que la API en el backend aún no se ha implementado. Tienes que esperar al desarrollador en el backend cuando proporciona las solicitudes necesarias, recordándole constantemente a sí mismo. Otra situación no es infrecuente cuando las solicitudes http necesarias ya están allí, pero se implementan de manera muy pobre y torcida.





Quizás no hubiera escrito este artículo. ¡Pero me pareció sorprendente que todos los ejemplos de implementación deficiente de API a continuación me aparecieran en un solo proyecto, al mismo tiempo!





En este proyecto, estoy desarrollando una aplicación móvil en Flutter usando el paquete Retrofit , que me ayuda a reducir el tiempo y el código que tengo que escribir yo mismo, generando código significativo automáticamente. También utilizo Insomnia para la verificación inicial de las solicitudes antes de implementarlas en el código.





La versión en video está disponible aquí https://www.youtube.com/watch?v=oj-i1IBejcI&t=8s





Antes de meterme en los problemas, me gustaría señalar que antes de convertirme en desarrollador móvil, trabajé como desarrollador Full-Stack durante más de 5 años. Y entiendo lo importante que es implementar una hermosa API para la interfaz, con la que sea fácil y agradable de integrar y segura en caso de futuros cambios en la API.





Vamos a empezar.





Arquitectura no RESTful

La primera decepción fue el hecho de que la arquitectura API no se implementa en el estilo RESTful. Honestamente, no recuerdo cuándo tuve que lidiar con la integración de tales API no RESTful.





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.





, :





  1. Retrofit, “”





  1. , , . , 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? ? ?





Sé que el servidor está escrito en PHP. Señores que programan en PHP, ¿podrían escribir en los comentarios cómo es posible?





Conclusión

Ahora estoy experimentando los sentimientos opuestos. Por un lado, estoy molesto porque tengo que integrar una API tan fea, por otro lado, ya estoy esperando el próximo caso, que mostrará de qué otra manera se puede desfigurar la API.





Me gustaría conocer su experiencia en la integración con la API y los problemas que encontró. 





Gracias. ¡Feliz codificación!








All Articles