Ci sono strategie per scoprire i servizi REST usando HATEOAS?

10

Quando costruisci un servizio REST con il vincolo HATEOAS , è molto facile pubblicizzare l'esistenza di risorse tramite il collegamento. Fai un GET alla radice del mio sito e rispondo con il documento di root che elenca tutte le risorse di primo livello:

{
    users: { href: "/users" }
    questions { href: "/questions" }
}

I client che comprendono come leggere questi valori di href potrebbero eseguire GET richieste su questi e scoprire tutte le risorse correnti disponibili nell'applicazione.

Funziona bene per gli scenari di ricerca di base, ma non indica se una risorsa è interrogabile. Ad esempio, potrebbe essere ragionevole eseguire:

GET /users?surname=Smith

Esistono formati in grado di esprimere questa capacità di query con informazioni sufficienti che un client potrebbe formulare una query coerente senza una conoscenza preliminare necessaria della risorsa?

Inoltre, c'è un modo per esprimere che un client è autorizzato a eseguire un POST in una data posizione con una posizione prevista. Ad esempio, è possibile che un client esegua quanto segue per creare una nuova risorsa di domande:

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..."
}

Quando utilizzi l'HTML come formato per il consumo umano, possiamo esprimere molto di ciò attraverso l'uso di moduli e prompt scritti per consentire a un essere umano di scoprire le operazioni che è consentito eseguire su un servizio.

Esistono formati che sono capaci di cose simili per i clienti?

    
posta Paul Turner 04.07.2013 - 18:01
fonte

3 risposte

1

Come faresti a sapere che tipo di input sono accettabili? Vale a dire, se il tuo cliente non ha conoscenze pregresse, come definiresti la semantica del "cognome"? Stai iniziando a entrare nel territorio di aver bisogno di qualcosa come OWL .

Penso che sia più pratico aspettarsi che i tuoi clienti comprendano la semantica di noti mime-tipi; ad esempio, "text / vcard" per le persone.

    
risposta data 05.07.2013 - 14:35
fonte
4

Puoi pubblicare dettagli sui tuoi servizi attraverso un "WADL"

link

È opzionale e non tutte le tecnologie REST backend supportano questo. Jersey, l'implementazione java "ufficiale" di jax-rs, lo supporta ad esempio - può essere generato automaticamente per te.

È piuttosto raro, però, vederlo usato.

Non so di quelli grandi che lo usano. In generale hai una pagina web che descrive l'API.

    
risposta data 05.07.2013 - 12:13
fonte
0

Spring ha un certo supporto per questo come fa il ristabilimento.

    
risposta data 05.07.2013 - 19:42
fonte

Leggi altre domande sui tag