Introdução
Neste artigo, quero falar sobre os problemas que encontrei no processo de integração com a API sobre o protocolo HTTP e compartilhar minha experiência em resolvê-los.
Ao desenvolver aplicativos front-end (Mobile / Web), muitas vezes você se depara com o fato de que a API no back-end ainda não foi implementada. Você tem que esperar pelo desenvolvedor no back-end quando ele fornece as solicitações necessárias, lembrando-o constantemente de si mesmo. Outra situação não é incomum quando as solicitações http necessárias já estão lá, mas são implementadas de forma muito pobre e incorreta.
Talvez eu não tivesse escrito este artigo. Mas me pareceu incrível que todos os exemplos de implementação ruim de API abaixo tenham chegado até mim em um único projeto, ao mesmo tempo!
Neste projeto, estou desenvolvendo um aplicativo mobile em Flutter usando o pacote Retrofit , que me ajuda a reduzir o tempo e o código que preciso escrever, gerando um código significativo automaticamente. Eu também uso o Insomnia para a verificação inicial de solicitações antes de implementá-las no código.
A versão em vídeo está disponível aqui https://www.youtube.com/watch?v=oj-i1IBejcI&t=8s
Antes de entrar nos problemas, gostaria de salientar que antes de me tornar um desenvolvedor móvel, trabalhei como desenvolvedor Full-Stack por mais de 5 anos. E eu entendo o quão importante é implementar uma bela API para o frontend, com a qual seja fácil e agradável de integrar e segura no caso de futuras alterações na API.
Então, vamos começar.
Arquitetura não RESTful
A primeira decepção foi o fato de a arquitetura da API não ser implementada no estilo RESTful. Honestamente, não me lembro quando tive que lidar com a integração dessas APIs não 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.
, :
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? ? ?
Eu sei que o servidor está escrito em PHP. Senhores que programam em PHP, poderiam escrever nos comentários como isso é possível?
Conclusão
Agora estou experimentando os sentimentos opostos. Por um lado, estou chateado por ter que integrar uma API tão feia, por outro, já estou ansioso para o próximo caso, que mostrará de que outra forma você pode desfigurar a API.
Gostaria de saber sobre sua experiência na integração com a API e quais problemas você encontrou.
Obrigada. Boa codificação!