Saya tidak mengerti manfaat dari HATEOAS untuk API yang dimaksudkan untuk digunakan oleh program (sebagai lawan dari manusia yang secara langsung menelusuri API Anda). Tentu, pelanggan tidak terikat pada skema URL tetapi mereka terikat pada skema data yang merupakan hal yang sama dalam pikiran saya.
Misalnya, anggap saya ingin melihat item pada pesanan, anggap saya telah menemukan atau mengetahui URL pesanan.
HATEOAS:
order = get(orderURL);
item = get(order.itemURL[5]);
non-HATEOAS:
order = get(orderURL);
item = get(getItemURL(order,5));
Dalam model pertama saya harus tahu fakta bahwa objek pesanan memiliki bidang itemURL. Dalam model kedua saya harus tahu cara membuat URL item. Dalam kedua kasus saya harus "mengetahui" sesuatu sebelumnya sehingga apa yang sebenarnya dilakukan HATEOAS untuk saya?
web-development
rest
Kecepatan
sumber
sumber
get(orderURL);
harus memberi tahu Andathe fact that the order object has an itemURL field
.Jawaban:
Salah satu perbedaannya adalah bahwa skema mudah-mudahan standar, atau setidaknya dapat digunakan kembali oleh orang lain.
Misalnya, katakanlah Anda menggunakan API Twitter dan Anda ingin mendukung StatusNet juga (atau sebagai gantinya). Karena mereka menggunakan model data yang sama seperti Twitter, jika API mengikuti HATEOAS Anda sekarang hanya perlu mengubah URL utama. Jika tidak, Anda sekarang harus mengubah setiap URL dari kode.
Tentu saja, jika Anda perlu mengubah kode untuk memasukkan URL titik masuk layanan, mungkin itu tidak terlalu membantu. Itu benar-benar bersinar adalah jika URL itu dimasukkan secara dinamis; misalnya, jika Anda membangun layanan seperti Twillio, yang akan berinteraksi dengan API milik pengguna.
sumber
API Yang Dapat Dieksplorasi: Ini mungkin terdengar sepele tetapi tidak meremehkan kekuatan API yang dapat dieksplorasi. Kemampuan untuk menelusuri data membuatnya lebih mudah bagi pengembang klien untuk membangun model mental API dan struktur datanya.
Dokumentasi sebaris: Penggunaan URL sebagai hubungan tautan dapat mengarahkan pengembang klien ke dokumentasi.
Logika klien sederhana: Seorang klien yang hanya mengikuti URL alih-alih membangunnya sendiri, harus lebih mudah diimplementasikan dan dipelihara.
Server mengambil kepemilikan struktur URL: Penggunaan hypermedia menghapus pengetahuan kode keras klien tentang struktur URL yang digunakan oleh server.
Tidak memuat konten ke layanan lain: Hypermedia diperlukan ketika memuat konten ke server lain (misalnya CDN).
Versi dengan tautan: Hypermedia membantu membuat versi API.
Berbagai implementasi dari layanan yang sama: Hypermedia adalah suatu keharusan ketika ada beberapa implementasi dari layanan yang sama (dan satu klien perlu mengakses lebih dari satu dari mereka).
Anda dapat menemukan penjelasan mendalam tentang poin-poin ini di sini: http://soabits.blogspot.no/2013/12/selling-benefits-of-hypermedia.html
sumber