目前我正在设计如何在版本化的rest API中处理路由,其中版本不是url的一部分,而是通过头变量发送。
我考虑过/看过像:
根据标头变量重写url,即请求/orders {X-Media-Type: v1}
将重写为/ v1 / orders,然后我们可以有一个@Path("/v1/orders") OrderV1Resource {}
,从而使v2变得微不足道{{1} }。 (我的第一个偏好)How to use a servlet filter in Java to change an incoming servlet request url?
有一个单@Path("/v2/orders") OrderV2Resource {}
,其中每个方法都有一个注入的HeaderParam,我可以检查头变量,然后决定我想使用哪个Order API实现(这对我来说似乎非常混乱)
@Path("/orders") OrderResource {}
或者只是将它们捆绑在单独的JARS中,并让服务查看标题并路由到正确的版本。 (如果应用程序变得非常大,似乎有意义)
答案 0 :(得分:0)
我最终通过标题传递了版本,然后使用它通过javax.servlet.Filter
路由所需的资源。
示例Accept标头:
Accept: application/vnd.datarank.v1+json