Klien secara konsisten membuat permintaan dengan tajuk terima 'aplikasi / json' dan tipe konten 'aplikasi / json'
Ya, ini adalah hal yang benar untuk dilakukan, tetapi tidak berarti vendor peduli. Meskipun saya benar-benar memahami rasa frustrasi Anda, karena saya juga berpikir layanan JSON harus selalu memberikan respons JSON tetapi ada banyak contoh di mana bukan itu masalahnya.
Sepanjang proyek, praktik yang sama ini telah diterapkan di dua vendor yang berbeda dan dua layanan yang berbeda. Saya menemukan diri saya harus membenarkan mengapa layanan perlu diubah. Vendor menyatakan bahwa klien harus mengatasi ini dan bahkan perpustakaan pilihan REST saya telah dipertanyakan (RestEasy) karena tidak mengatasinya secara default 'out the box'.
Saya harus setuju dengan vendornya. Ini adalah layanan mereka dan selama mereka mendokumentasikan dengan jelas kasus khusus untuk menggunakannya, maka Anda tidak dapat benar-benar memaksakan bahwa mereka mengubahnya. Ini kerugian bagi mereka karena pengembang akan lambat untuk mengadopsi API mereka, dan jika mereka mendengarkan apa yang dibutuhkan pengembang maka mereka akan mengubahnya, tetapi sayangnya tidak ada aturan bahwa mereka harus mengikuti standar.
Pertanyaannya adalah apakah saya melewatkan sesuatu?
Tajuk permintaan tidak berarti apa-apa kecuali mereka terganggu dengan benar di ujung yang lain. Saya tahu bahwa jika saya mengembangkan API web menggunakan PHP, maka persetan dengan header permintaan. Saya dapat menanggapi dengan apa pun yang saya inginkan. Sedangkan, layanan yang dikonfigurasi dalam IIS dengan C # menawarkan penanganan header permintaan yang lebih mudah, jenisnya, dan penanganan jenis respons. Ini banyak hubungannya dengan alat yang digunakan vendor untuk membangun API.
Saya menjadi pedantic tentang ini?
Ya dan Tidak. Saya memiliki teman pengembang yang tidak dapat melewati ini. Mereka akan menjadi sangat terpaku oleh masalah dan tidak dapat melanjutkan dengan tugas-tugas lain sampai API bekerja seperti yang mereka harapkan berfungsi. Nah, itu sudah menjadi terlalu mahal.
Ini masalah karena vendor telah menciptakan "lebih banyak pekerjaan" untuk menyelesaikan tugas Anda. Siapa pun akan frustrasi dengan itu. Saya tahu saya akan menjadi.
Apakah boleh menggunakan JSON API yang tidak memiliki tipe konten aplikasi / json dalam skenario ini?
Tentu saja, tapi itu bukan praktik yang baik.
Klien hanya bisa memberi tahu server apa jenis konteksnya request
. Itu tidak memiliki kemampuan untuk menegakkan tipe konten untuk response
. Klien hanya dapat memberi tahu server bahwa ia akan accept
mengumpulkan jenis-jenis konten yang mungkin.
Definisi Field Header
Bidang Terima header permintaan dapat digunakan untuk menentukan jenis media tertentu yang dapat diterima untuk respons. Header penerimaan dapat digunakan untuk menunjukkan bahwa permintaan secara khusus terbatas pada serangkaian kecil jenis yang diinginkan, seperti dalam kasus permintaan untuk gambar in-line.
Mungkin saja bagi klien untuk meminta gambar image/jpeg
, tetapi server merespons dengan text/html
dan kode status 404
jika gambar itu tidak ditemukan. Server juga dapat merespons secara tidak benar. Ada banyak situs web Wordpress di luar sana yang merespons text/html
dan kode status 200
untuk file yang tidak ditemukan halaman.
Nah, itu semua praktik BAD pada server. Apa yang saya coba katakan kepada Anda adalah bahwa itu benar-benar mungkin, dan sering terjadi. Orang tidak tahu apa yang mereka lakukan ketika mereka mengkonfigurasi hal-hal ini.
Referensi akan dihargai. Bagaimana Anda mengatasi situasi ini dari sudut pandang komersial?
Saya mengalami masalah ini pada beberapa proyek. Anda post
data JSON ke server dan itu memberikan kembali respons JSON atau HTML.
Ini benar-benar bukan masalah besar untuk mengetahui tipe mana yang ada dalam respons. Jika karakter pertama adalah {
atau [
Anda dapat mengasumsikan JSON. Jika itu <
Anda dapat menganggap HTML. Begitulah cara saya menanganinya di masa lalu. Terkadang programmer yang menulis API tahu semua tentang HTTP header. Semuanya kembali sebagai text/html
tanggapan. Jika Anda beruntung, mereka telah mengkonfigurasi Apache ke default text/plain
yang kadang-kadang dapat membantu.
Masalah-masalah ini ada dan akan terus ada jauh di masa depan. Komunikasi server ke server sejauh ini merupakan kegiatan yang tidak diatur. Tidak ada badan pengelola yang akan menendang keluar vendor dari serikat pekerja untuk server yang memberikan respons HTTP buruk.