私は安らかなAPIのバージョン管理について多くのことを読んでいると思いますが、私はuriを通してサービスをバージョンアップしないことにしました。WCFまたはASP.Net Web APIを使用したRESTful APIのバージョニングの実装
uri、書式(例:application/json)、およびスキーマ/形式の要求されたリソースを定義する要求を処理するwcfサービスまたはWeb APIサービスを実装する最良の方法は何でしょうか。バージョン(例:player-v2)を受け入れる?
WCFを使用すると、URIに基づいてルーティングすることができますが、ヘッダーに基づいてルーティングすることはできません。だから私は適切に経路を設定することはできません。
Web Apiでは、要求されたフォーマットではなく、スキーマではないカスタムMediatypeformattersを定義することができます(たとえば、戻り値の型はPlayerV1またはPlayerV2)。
Iは、サービスを実装したい(いずれかWCFまたはWeb APIを使用して)この要求のために、(擬似コード):
api.myservice.com/players/123 Accept format=application/json; schema=player-v1
は、JSON形式で、PlayerV1エンティティを返し
とするため
この要求:api.myservice.com/players/123 Accept format=application/json; schema=player-v2
は、json形式でPlayerV2エンティティを返します。
これを実装する方法に関するヒントを教えてください。
EDIT:バージョンを処理するためにコンテンツネゴシエーションを使用する理由を明確にするには、REST API Design: Put the “Type” in “Content-Type”を参照してください。
ここでのポイントではないので、どの方法が良いかについての議論を開始しません(URIのバージョンかどうか)。私は、「RESTful APIでコンテンツネゴシエーションを実装する」という言い方を変えることができます。実装上の課題は同じではないでしょうか? – codeclash
@ cardinal私は更新しました。 – Aliostad
値の提供者は私に要求されたスキームへのアクセスを許可しますが、いずれの場合でも、あなたの例の戻り値の型はPlayerですが、実際には、要求されたスキームに応じてPlayerまたはPlayerV2を返す必要があります。何か不足していますか?その場合、 – codeclash