質問

現在は、バージョン管理されたREST APIでルーティングを扱う方法を設計しています。ここで、バージョンはURLの一部ではなく、ヘッダー変数を介して送信されます。

私は次のようなものを検討/見たことがあります。

ヘッダ変数に基づいてURLを書き直すことは、要求/orders {X-Media-Type: v1}は/ v1 / ordersを書き換えてから、@Path("/v1/orders") OrderV1Resource {}を持ち、したがってV2を作成することができます。 (私の最初の好み) Javaでサーブレットフィルタを使用して入ってくるサーブレット要求のURLを変更する方法は?

それぞれのメソッドに注入されたヘッダパラムが注入され、ヘッダ変数をチェックしてから、どの注文のAPI実装を使用したい(これは私にとって非常に面倒と思われる)

を決定できます。
// pseudo-java code
@Path("/orders") 
OrderResource {
   OrderV1Impl v1Impl;
   OrderV2Impl v2Impl;
   @GET
   public List<Order> findAll(@HeaderParam header) {
       version = header.get("accepts")
       if(version.equals("v1")) { return v1Impl.findAll() }
       else if(version.equals("v2")) { return v2Impl.findAll() }
       return error
   }
}
.

または単に分離された瓶にまとめて、サービスがヘッダーと正しいバージョンへのルートを調べるだけです。 (アプリが本当に大きくなるように成長した場合は理にかなっているようです)

役に立ちましたか?

解決

私はヘッダーを介してバージョンを渡した後、これを使用してjavax.servlet.Filterを介して希望のリソースをルーティングしました。

例を受け入れる: Accept: application/vnd.datarank.v1+json

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top