pengantar
Pada artikel ini, saya ingin berbicara tentang masalah yang saya temui dalam proses integrasi dengan API melalui protokol HTTP, dan berbagi pengalaman saya dalam menyelesaikannya.
Saat mengembangkan aplikasi frontend (Seluler / Web), Anda sering menemukan fakta bahwa API di backend belum diimplementasikan. Anda harus menunggu developer di backend saat dia memberikan permintaan yang diperlukan, terus-menerus mengingatkan dirinya sendiri. Situasi lain sering terjadi ketika permintaan http yang diperlukan sudah ada, tetapi penerapannya sangat buruk dan tidak benar.
Mungkin saya tidak akan menulis artikel ini. Tetapi saya sangat terkejut bahwa semua contoh implementasi API yang buruk di bawah ini ditemukan oleh saya dalam satu proyek, pada waktu yang sama!
Dalam proyek ini, saya mengembangkan aplikasi seluler di Flutter menggunakan paket Retrofit , yang membantu saya mengurangi waktu dan kode yang harus saya tulis sendiri, menghasilkan kode yang signifikan secara otomatis. Saya juga menggunakan Insomnia untuk pemeriksaan awal permintaan sebelum menerapkannya dalam kode.
Versi video tersedia di sini https://www.youtube.com/watch?v=oj-i1IBejcI&t=8s
Sebelum saya membahas masalah ini, saya ingin menunjukkan bahwa sebelum saya menjadi pengembang seluler, saya bekerja sebagai pengembang Full-Stack selama lebih dari 5 tahun. Dan saya memahami betapa pentingnya menerapkan API yang indah untuk frontend, yang dengannya mudah dan menyenangkan untuk diintegrasikan dan aman jika terjadi perubahan API di masa mendatang.
Jadi, mari kita mulai.
Arsitektur yang tidak tenang
Kekecewaan pertama adalah kenyataan bahwa arsitektur API tidak diimplementasikan dalam gaya RESTful. Sejujurnya, saya tidak ingat kapan saya harus berurusan dengan integrasi API non-RESTful semacam itu.
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? ? ?
Saya tahu server ditulis dalam PHP. Tuan-tuan yang memprogram dalam PHP, dapatkah Anda menulis di komentar bagaimana ini mungkin?
Kesimpulan
Sekarang saya mengalami perasaan yang berlawanan. Di satu sisi, saya kesal karena saya harus mengintegrasikan API yang begitu jelek, di sisi lain, saya sudah menantikan kasus berikutnya, yang akan menunjukkan bagaimana lagi Anda dapat merusak API.
Saya ingin tahu tentang pengalaman Anda dalam mengintegrasikan dengan API, dan masalah apa yang Anda hadapi.
Terima kasih. Selamat membuat kode!