Ho un servizio REST voglio documentare per il mio cliente lo sviluppo di squadra.Documento HAL "_links" da Spring hateoas (con spavalderia)?
così ho aggiunto un po 'di Links
da Spring-Hateoas
al mio API risorse, e collegato a esso swagger-springmvc
@Api...
annotazioni di documentare tutto e fare un buon riferimento API per la mia squadra angolare per essere in grado di capire il mio servizio REST.
Il problema è che swagger
non è in grado di scoprire quali collegamenti sono possibili, e semplicemente darmi una grande serie di Links
senza dire i loro possibili valori.
Ecco una (semplice) esempio. Swagger rileva:
Model Schema
CollectionListResource {
collections (array[CollectionResource]): All available collections,
links (array[Link]): Relations for next actions
}
CollectionResource {
collectionId (string): Collection Unique Id,
name (string): Human readable collection name,
links (array[Link]): Relations for next actions
}
Link {
rel (string, optional),
templated (boolean, optional),
href (string, optional)
}
e ottengo infatti nel HAL:
{"collections":
[{"collectionId":"5370a206b399c65f05a7c59e",
"name":"default",
"_links":{ [
"self":{
"href":"http://localhost:9080/collections/5370a206b399c65f05a7c59e"
},
"delete":{
"href":"http://localhost:9080/collections/5370a206b399c65f05a7c59e"
}
]}
}, ...]}
Ho cercato di estendere Link
e ResourceSupport
per aver annotata versione di loro, ma questo mi porterà da nessuna parte.
C'è un modo/uno strumento che potrei usare per generare un buon documento API che dice che una relazione self
è quella di ottenere il contenuto e una relazione delete
è quella di eliminare la raccolta?
Mi piaceva lo swagger per la sua buona interfaccia utente, ma non mi importa cambiare il mio strumento di documentazione se il suo aiuto con il documento è davvero completo.
potevo finalmente pensare di cambiare a molla hateoas per un altro generatore di collegamento, ma non sono sicuro che ci sia uno strumento migliore disponibile al momento.
Grazie per tutti i riferimenti; Ne conoscevo già alcuni, ma ne ho scoperti altri. Il nuovo HAL che hai proposto sarebbe effettivamente più completo del mio attuale, ma non vedo ancora il modo di avere spavalderia alla scoperta del contenuto della matrice _links. In effetti, in questo momento sono abbastanza contento di HAL Spring che genera per me. Mi chiedo se la soluzione non sia quella di trasformare l'array _links generico in una struttura contenente campi di collegamento opzionali predefiniti. Sintatticamente parlando, infatti, è "solo" rimuovere [], ma sul lato dell'implementazione, è certamente molto più complesso;) –