현재 버전이 URL의 일부가 아니지만 헤더 변수를 통해 전송되는 버전 관리 된 나머지 API에서 라우팅을 처리하는 방법을 설계하고 있습니다.Dropwizard 다중 Rest API 버전
나는 생각했다/같은 볼 것들 :
다시 쓰는 것 (V2)을 따라서/V1/주문에 다시 것입니다 요청 /orders {X-Media-Type: v1}
즉, 헤더 변수에 따라 URL을하고 우리가 @Path("/v1/orders") OrderV1Resource {}
을 가질 수 있으며, 보통 @Path("/v2/orders") OrderV2Resource {}
. (처음 선호) 그것의 각각의 방법은 주입 HeaderParam을 가지고 있고 헤더 변수를 확인하고 (나에게 매우 지저분한 보인다) 내가 사용하고자하는 주문 API 구현 결정할 수있는 곳 단일 @Path("/orders") OrderResource {}
을 갖는 How to use a servlet filter in Java to change an incoming servlet request url?
// 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
}
}
별도의 JARS에 번들로 제공하고 서비스에서 헤더를보고 올바른 버전으로 라우트하는 것이 좋습니다. (앱이 실제로 커지면 의미가있는 것처럼 보입니다)
이에 대한 논의가있다 :
예 헤더에 동의합니다. 희망이 있으면 https://groups.google.com/forum/#!search/URL$20API$20Versioning$20dropwizard/dropwizard-user/Z8QA7cngzUo/5JTxc7wNt8wJ – Cemo
@cemo 링크를 클릭해도 검색 결과로 이동하지 않을 수 있습니다. .. –