バージョニングのRESTfulサービスに関する多くのStack Overflow(およびその他の)記事を読んでいます。 正直言って、圧倒しています。ベンダーのMIMEタイプ(APIのバージョン管理用)
クライアントが特定のバージョンのリソースをリクエストできるように、私は(縁どりの)RESTfulサービスにAccept:ヘッダーを使用することに決めました。私が明確にしていないのは、Acceptヘッダーで指定するものです。
私はよく見てきた例はこれです:
Accept: application/vnd.mycompany.myapp.customer-v2+json
私の質問は以下のとおりです。
私はすべてのVNDタイプが登録されなければならないことを修正するのですか? (http://www.iana.org/cgi-bin/mediatypes.pl)
バージョンとタイプ(つまり、-v2 + json)はタイプの一部なので、それぞれのバージョンとタイプを登録する必要がありますか?
登録する必要のない "x-"サブタイプの代わりにvndを使用する理由はありますか?例:
Accept: application/x-mycompany.myapp-v2+json
既存のAPIは内部のみですが、将来は顧客に公開されます。
これは意味をなさないものですが、既存のタイプを使用することはできますが、バージョンを追加することは可能ですか?バージョンおよびタイプを追加するために許容可能なフォーマット(例えば-V2 + JSON)がある何
Accept: application/json-v2
(現在のAPIは、 "アプリケーション/ JSON" を返します)。
サポートされていないバージョンをクライアントが要求した場合はどうなりますか?正しい応答は406ですか?クライアントが任意のバージョンを要求できますか?または、より一般的には、クライアントがAcceptヘッダーも受け入れない場合もどうでしょうか?*/*?
追加の提案があります。もちろん、目標は、特定のリソースに対してサービスが返すものに変更を許可することですが、既存のクライアントを破ることはありません。
- 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
ここで私は最近見てきた資源の短いリストです
x-接頭辞は推奨されていません。それがまだ使用されている場合は、実際に両方が必要になります。 "vnd。"ベンダープレフィックスです。それでも有効です。ベンダー固有のMIMEタイプを使用する場合は、常に使用する必要があります。 – yam655