AFAIK Fielding tidak mengklaim REST itu bagus, dia hanya menggambarkan arsitektur web secara de-facto.
Saya pikir itu sedikit menjualnya. REST adalah, setelah semua, penghitungan dari gaya arsitektur yang Fielding menggunakan sebagai kepala arsitek dari HTTP / 1.1 spec .
Tetapi apakah sebenarnya ada alasan untuk berpikir REST adalah arsitektur yang diinginkan untuk domain ini? Apakah ada bukti yang mengatakan HATEOAS adalah prinsip desain yang bermanfaat untuk komunikasi mesin-ke-mesin?
"Tergantung". HATEOAS adalah bagian dari batasan antarmuka seragam REST.
Dengan menerapkan prinsip rekayasa perangkat lunak generalitas ke antarmuka komponen, arsitektur sistem keseluruhan disederhanakan dan visibilitas interaksi ditingkatkan. Implementasi dipisahkan dari layanan yang mereka berikan, yang mendorong evolvabilitas independen. Namun, trade-off adalah antarmuka yang seragam menurunkan efisiensi, karena informasi ditransfer dalam bentuk standar daripada yang khusus untuk kebutuhan aplikasi. Antarmuka REST dirancang agar efisien untuk transfer data hypermedia berbutir besar, mengoptimalkan untuk kasus umum Web, tetapi menghasilkan antarmuka yang tidak optimal untuk bentuk lain dari interaksi arsitektur.
Jadi mari kita berpikir sejenak tentang apa artinya ini. Ketika saya mengalami masalah dengan router nirkabel saya, saya dapat berkomunikasi dengannya menggunakan browser yang sama yang saya gunakan untuk mengirimkan jawaban ke stackexchange. Secara khusus, tidak masalah apa browser yang saya gunakan, atau apakah browser saya beberapa pembaruan di belakang (atau di depan) dari apa yang diharapkan router. Tidak masalah bahwa organisasi teknik yang menulis peramban sepenuhnya independen dari organisasi yang menciptakan antarmuka router.
Itu hanya bekerja .
Tentu saja ini tidak universal. Fielding, pada 2008 , menulis:
Itu tidak berarti bahwa saya pikir semua orang harus merancang sistem mereka sendiri sesuai dengan gaya arsitektur REST. REST ditujukan untuk aplikasi berbasis jaringan yang berumur panjang yang menjangkau banyak organisasi. Jika Anda tidak melihat perlunya kendala, maka jangan menggunakannya.
Kendala yang membentuk gaya arsitektur REST dipilih untuk properti yang diinduksi; jika properti tersebut tidak bernilai untuk use case Anda, maka Anda harus benar-benar mempertimbangkan untuk menjatuhkan batasan yang sesuai.
Di mana mesin ke mesin menjadi sulit, adalah bahwa Anda telah kehilangan kemampuan manusia untuk kabur cocok dengan semantik yang disediakan oleh representasi. Klien bisa bertahan dengan hanya mengetahui jenis media, tetapi kami biasanya memiliki manusia yang melihat isyarat semantik untuk mendapatkan makna.
schema.org adalah salah satu bagian dari upaya untuk menciptakan kosakata yang dapat dibaca mesin; agen mesin menggunakan klien untuk menemukan petunjuk semantik, dan menerapkan pemahamannya sendiri tentang makna untuk memilih tindakan yang benar untuk diambil.
Tapi ini berhasil; Anda perlu berinvestasi dalam mengembangkan representasi ramah mesin dari sumber daya Anda, dan memastikan bahwa representasi tersebut tetap maju dan mundur kompatibel, sehingga klien dapat dikembangkan secara mandiri.
Ketika satu organisasi mengendalikan klien dan server, manfaat independensi ini jauh lebih kecil, dalam hal ini kendala mungkin bukan pilihan arsitektur yang tepat.