Podczas budowania usługi REST z ograniczeniem HATEOAS bardzo łatwo jest ogłosić istnienie zasobów poprzez łączenie. Robisz GET
do katalogu głównego mojej witryny, a ja odpowiadam dokumentem głównym z listą wszystkich zasobów pierwszego poziomu:
{
users: { href: "/users" }
questions { href: "/questions" }
}
Klienci, którzy rozumieją, jak odczytać te href
wartości, mogą wykonywać GET
na nich żądania i odkrywać wszystkie bieżące zasoby dostępne w aplikacji.
Działa to dobrze w podstawowych scenariuszach wyszukiwania, ale nie wskazuje, czy zasób ma możliwość zapytania. Na przykład rozsądne może być wykonanie:
GET /users?surname=Smith
Czy są jakieś formaty, które mogłyby wyrazić tę zdolność zapytania przy wystarczającej ilości informacji, aby klient mógł utworzyć spójne zapytanie bez konieczności wcześniejszej wiedzy o zasobie?
Ponadto, czy jest jakiś sposób, aby wyrazić, że klient może wykonać POST
określoną lokalizację w oczekiwanej lokalizacji. Na przykład można oczekiwać, że klient wykona następujące czynności, aby utworzyć nowy zasób pytań:
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..."
}
Używając HTML jako formatu do spożycia przez ludzi, możemy wyrazić wiele z tego, korzystając z formularzy i pisemnych podpowiedzi, aby umożliwić człowiekowi odkrycie operacji, które mogą wykonywać w usłudze.
Czy istnieją formaty zdolne do podobnych rzeczy dla klientów?