Dropwizard複数のREST APIバージョン
-
21-12-2019 - |
質問
現在は、バージョン管理されたREST APIでルーティングを扱う方法を設計しています。ここで、バージョンはURLの一部ではなく、ヘッダー変数を介して送信されます。
私は次のようなものを検討/見たことがあります。
ヘッダ変数に基づいてURLを書き直すことは、要求/orders {X-Media-Type: v1}
は/ v1 / ordersを書き換えてから、@Path("/v1/orders") OrderV1Resource {}
を持ち、したがってV2を作成することができます。 (私の最初の好み)
それぞれのメソッドに注入されたヘッダパラムが注入され、ヘッダ変数をチェックしてから、どの注文の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
所属していません StackOverflow