Non mi sento sicuro di cosa significhi esattamente avere rappresentazioni diverse di una risorsa RESTful. L'esempio canonico prevede che un'API fornisca un endpoint, ad esempio /v1/users/:id
, e consente al client di selezionare la migliore rappresentazione della risorsa tra JSON
, XML
, HTML
o PDF
a seconda dell'intervallo di media valore delle intestazioni ACCEPT
.
Avevo l'impressione che questa definizione di rappresentazione potesse essere estesa per comprendere più che semplici tipi di contenuto, ma in realtà schemi di risposta. Supponiamo ad esempio che un cliente desideri informazioni estese sull'utente che potrebbero ottenerlo specificando un'intestazione supportata.
Quindi, ad esempio, la mia applicazione potrebbe fornire diversi schemi per la stessa risorsa, ad esempio
# get the default user representation
GET /v1/users/1234
ACCEPT: application/vnd.myapp.v1+json
# server responds with
{"id": 1234, "name": "Jeffery Lebowski"}
# get the extended user representation
GET /v1/users/1234
ACCEPT: application/vnd.myapp.v1.extended+json
# server responds with
{"id": 1234, "name": "Jeffery Lebowski", "sport": "Bowling"}
Sto capendo correttamente il concetto di rappresentazioni in REST? Oppure il concetto di rappresentazioni delle risorse è applicabile solo ai tipi di contenuto e alla negoziazione del contenuto?
Se sì, come posso documentare le varie rappresentazioni che la mia API può restituire? Non sembra uno dei grandi strumenti di documentazione ( swagger.io o RAML ) supportano la documentazione di più rappresentazioni dello schema di una singola risorsa.