Saat membangun layanan REST dengan batasan HATEOAS , sangat mudah untuk mengiklankan keberadaan sumber daya melalui tautan. Anda membuat GET
ke root situs saya dan saya merespons dengan dokumen root yang mencantumkan semua sumber daya tingkat pertama:
{
users: { href: "/users" }
questions { href: "/questions" }
}
Klien yang mengerti cara membaca href
nilai - nilai ini dapat melakukan GET
permintaan pada mereka dan menemukan semua sumber daya saat ini yang tersedia dalam aplikasi.
Ini berfungsi baik untuk skenario pencarian dasar, tetapi tidak menunjukkan apakah sumber daya dapat diminta. Misalnya, mungkin masuk akal untuk melakukan:
GET /users?surname=Smith
Apakah ada format yang dapat mengekspresikan kemampuan kueri ini dengan informasi yang cukup sehingga klien dapat membentuk kueri yang koheren tanpa pengetahuan sumber daya yang diperlukan sebelumnya?
Selain itu, apakah ada cara untuk menyatakan bahwa klien diizinkan untuk melakukan POST
ke lokasi tertentu dengan lokasi yang diharapkan. Misalnya, dapat diharapkan bahwa klien melakukan hal berikut untuk membuat sumber daya pertanyaan baru:
POST /questions
{
title: "Are there strategies for discovering REST services using HATEOAS?",
body: "When building a REST service with the HATEOAS constraint, it's very..."
}
Saat menggunakan HTML sebagai format untuk konsumsi manusia, kita dapat mengekspresikan banyak hal ini melalui penggunaan formulir dan permintaan tertulis untuk memungkinkan manusia menemukan operasi yang diizinkan untuk dilakukan pada layanan.
Apakah ada format yang mampu melakukan hal serupa untuk klien?
Jawaban:
Bagaimana Anda tahu input seperti apa yang dapat diterima? Dengan kata lain, jika klien Anda tidak memiliki pengetahuan sebelumnya, bagaimana Anda mendefinisikan semantik "nama keluarga"? Anda mulai masuk ke wilayah yang membutuhkan sesuatu seperti OWL .
Saya pikir lebih praktis untuk mengharapkan klien Anda memahami semantik dari tipe mime yang terkenal; katakan, misalnya, "text / vcard" untuk orang.
sumber
application/atomapp+xml
dan membuatnya tersedia untuk semua klien yang sudah memahami format ini. Kemungkinan ada cukup banyak jenis konten terkenal di luar sana untuk menjadikan ini solusi praktis.Anda dapat mempublikasikan detail layanan Anda melalui "WADL"
http://en.wikipedia.org/wiki/Web_Application_Description_Language
Ini opsional dan tidak setiap teknologi backend REST mendukung ini. Jersey, implementasi java "resmi" dari jax-rs, mendukungnya misalnya - dapat dibuat secara otomatis untuk Anda.
Ini cukup langka, untuk melihatnya digunakan.
Saya tidak tahu yang besar menggunakannya. Secara umum Anda memiliki halaman web yang menggambarkan api.
sumber
Musim semi memiliki beberapa dukungan untuk ini seperti halnya gelisah.
sumber