Створюючи послугу REST із обмеженням HATEOAS , дуже просто рекламувати існування ресурсів за допомогою посилання. Ви робите GET
корінь мого сайту, і я відповідаю кореневим документом, у якому перераховані всі ресурси першого рівня:
{
users: { href: "/users" }
questions { href: "/questions" }
}
Клієнти, які розуміють, як читати ці href
значення, можуть виконувати GET
запити на них та відкривати всі поточні ресурси, наявні в програмі.
Це добре працює в базових сценаріях пошуку, але не вказує, чи ресурс підлягає запиту. Наприклад, це може бути розумно виконати:
GET /users?surname=Smith
Чи існують формати, які могли б виразити цю здатність запиту достатньою інформацією, щоб клієнт міг сформувати узгоджений запит без необхідності попереднього знання ресурсу?
Крім того, чи є можливість виразити, що клієнту дозволено виконувати POST
вказану локацію з очікуваним місцеположенням. Наприклад, можна очікувати, що клієнт виконає наступне, щоб створити новий ресурсний питання:
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..."
}
Використовуючи HTML як формат для споживання людиною, ми можемо багато чого це висловити, використовуючи форми та письмові підказки, щоб дозволити людині виявити ті операції, які вони можуть виконувати на сервісі.
Чи існують формати, здатні подібні речі для клієнтів?