При построении службы 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 в качестве формата для потребления человеком, мы можем выразить многое из этого с помощью форм и письменных подсказок, позволяющих человеку обнаруживать операции, которые ему разрешено выполнять в службе.
Существуют ли форматы, которые способны на подобные вещи для клиентов?