Berbagai pembicaraan yang telah saya tonton dan tutorial yang saya pindai di REST tampaknya menekankan sesuatu yang disebut 'dapat ditemukan'. Menurut pemahaman saya yang terbatas, istilah ini sepertinya berarti bahwa klien harus dapat pergi ke http://URL
- dan secara otomatis mendapatkan daftar hal-hal yang dapat dilakukan.
Apa yang saya kesulitan pahami - adalah bahwa 'klien perangkat lunak' bukan manusia. Mereka hanya program yang tidak memiliki pengetahuan intuitif untuk memahami apa sebenarnya yang harus dilakukan dengan tautan yang disediakan. Hanya orang yang dapat mengunjungi situs web dan memahami teks serta tautan yang disajikan dan menindaklanjutinya.
Jadi apa gunanya dapat ditemukan, ketika kode klien yang mengakses URL yang dapat ditemukan tersebut tidak dapat benar-benar melakukan apa pun dengannya, kecuali pengembang manusia dari klien benar-benar bereksperimen dengan sumber daya yang disajikan? Ini terlihat seperti hal yang sama persis dengan mendefinisikan sekumpulan fungsi yang tersedia dalam manual Dokumentasi, hanya dari arah yang berbeda dan benar-benar melibatkan lebih banyak pekerjaan untuk pengembang. Mengapa pendekatan kedua ini mendefinisikan apa yang dapat dilakukan dalam dokumen di luar sumber daya REST yang sebenarnya, dianggap lebih rendah?
"Klien" mungkin tidak cukup canggih untuk memanfaatkannya, tetapi pengguna klien bisa. Seorang klien bisa menjadi sesuatu yang sederhana seperti browser web. Yang dapat ditemukan adalah tentang memungkinkan orang untuk mempelajari dan menggunakan API .
Misalnya, Jenkins (server CI) memiliki antarmuka seperti REST. Pergi ke halaman mana saja, postfix URL dengan "/ api", dan Anda mendapatkan halaman yang menggambarkan semua yang dapat Anda lakukan. Itu membuat belajar API sepele. Sebagai contoh, http://ci.jruby.org membawa Anda ke server jenkins untuk jruby, dan http://ci.jruby.org/api membawa Anda ke api untuk halaman tertentu.
sumber
Saya merasa senang beberapa saat yang lalu untuk bekerja dengan API yang memiliki dokumentasi yang sangat, sangat sulit untuk dipahami.
Setelah saya berhasil mendapatkan balasan yang sebenarnya dari server, dimungkinkan untuk membandingkan dokumentasi dengan balasan server dan menggunakannya untuk menguraikan dokumentasi (dan ya, mengartikannya adalah istilah yang tepat). Masalahnya adalah bahwa jika permintaan dikirim ke server yang tidak sepenuhnya benar sesuai dengan spesifikasi, Anda hanya akan mendapatkan kesalahan, dan dengan dokumentasi yang tidak dapat dibaca, mencari tahu cara mengirim permintaan yang benar hampir tidak mungkin. Ada juga versi berbeda dari dokumentasi API yang tidak setuju satu sama lain dan mungkin tidak setuju dengan API itu sendiri; itu tidak membantu.
Jika ada satu perintah yang bisa saya kirim ke server, mengembalikan daftar semua perintah yang mungkin dan bagaimana tepatnya mengirimnya, itu akan sangat membantu. Keterjangkauan tidak hanya untuk klien, tetapi juga berguna untuk pengembang perangkat lunak.
sumber
CATATAN: Saya bukan ahli dalam hal ini, tetapi saya mengalami proses yang sama dalam mencoba untuk mendamaikan nuansa berbeda dari interpretasi orang tentang "REST" beberapa tahun yang lalu, dan ini adalah takeaway yang saya dapatkan dari melihatnya di waktu.
Setahu saya, ini bermula dari Hypermedia karya Roy Fielding sebagai Engine of Application State alias "HATEOAS", yang kemudian menjadi pemungkin gagasan "web semantik".
Jadi ... pada dasarnya, dan sekali lagi seperti yang saya mengerti, Anda membuat aplikasi RESTful Anda pada dasarnya menggambarkan diri sedemikian rupa sehingga konsumen tidak harus memiliki pengetahuan sebelumnya tentang kontrak formal untuk menggunakan konten / fungsionalitas Anda. Mereka dapat terlibat dari beberapa titik akhir root default dan kemudian berjalan tautan yang relevan secara kontekstual yang disediakan aplikasi Anda ketika konsumen berinteraksi. Konsumen, tentu saja, bisa seseorang atau agen sistemik.
Jika Anda hanya menggunakan "REST" untuk url cantik yang dipetakan ke operasi CRUD yang harus diketahui oleh konsumen dan panggilan sesuai dengan kontrak yang terkenal, Roy Fielding akan menganggapnya tidak benar-benar tenang.
Itu bukan untuk mengatakan bahwa pengaturan layanan RPC rasa REST tidak dapat berguna / perbaikan atas model RPC yang lebih rumit dan cocok untuk penggunaan terbatas / terkontrol, tetapi garis keras akan memandang rendah hidung mereka dan menganggapnya sebagai merosot Saya tidak benar-benar tenang.
sumber