Ho letto molti degli overflow dello stack (e di altri) sui servizi RESTful di versioning. È un po 'travolgente, ad essere onesti.Tipi MIME del fornitore (per il controllo delle versioni API)
Ho deciso di utilizzare un'intestazione Accept: per il nostro servizio (marginalmente) RESTful in modo che i client possano richiedere versioni specifiche di una risorsa. Quello su cui non sono chiaro è cosa specificare nell'intestazione Accept.
L'esempio che ho visto spesso è questa:
Accept: application/vnd.mycompany.myapp.customer-v2+json
Le mie domande sono:
Sono corretto che tutti i tipi VND devono essere registrati? (http://www.iana.org/cgi-bin/mediatypes.pl)
La versione e il tipo (cioè -v2 + json) fanno parte del tipo e quindi è necessario registrare ogni versione e tipo?
C'è qualche motivo per usare vnd invece di un sottotipo "x-" che non ha bisogno di essere registrato? Ad esempio:
Accept: application/x-mycompany.myapp-v2+json
L'API esistente è solo interna, ma in futuro sarà esposta ai clienti.
Non è sicuro che ciò abbia senso, ma è possibile utilizzare un tipo esistente ma aggiungere una versione? (L'API corrente restituisce "application/json")
Accept: application/json-v2
Quali sono formati accettabili per aggiungendo una versione e del tipo (ad esempio -v2 + JSON).
Cosa succede se un client richiede una versione non supportata? La risposta corretta è 406? Il cliente può richiedere qualsiasi versione? O più in generale, cosa succede se il client non fornisce l'intestazione Accept o Accept: */*?
Qualsiasi suggerimento aggiuntivo benvenuto. L'obiettivo, ovviamente, è quello di consentire modifiche a ciò che il servizio restituisce per una determinata risorsa, ma non a rompere i client esistenti.
Ecco un breve elenco di risorse Ho guardato di recente:
- Best practices for API versioning?
- How to version REST URIs
- REST api versioning (only version the representation, not the resource itself)
- http://www.lexicalscope.com/blog/2012/03/12/how-are-rest-apis-versioned/
- http://www.subbu.org/blog/2008/05/avoid-versioning-please
- http://www.informit.com/articles/article.aspx?p=1566460
- http://en.wikipedia.org/wiki/Internet_media_type#Prefix_vnd
- http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.1
Il prefisso x- è stato deprecato. Se fosse ancora in uso, avresti effettivamente bisogno di entrambi. Il "vnd". è il prefisso del venditore. È ancora valido e deve essere sempre utilizzato quando si utilizza un tipo MIME specifico del fornitore. – yam655