关于在Java/Spring项目中组织版本化REST API代码的最佳实践(示例?)?

ale*_*pro 5 java api rest spring web

我很好奇,如果有人能够指出一个很好的例子/最佳实践来组织REST API代码与版本控制(基于uri,意思是"/ v1/zzz"和"/ v2/xxx",甚至更好的东西依赖于Accept标头) - 在Java/Spring项目中?我担心我现在的项目太复杂了,所以向别人学习会很好.

澄清:不确定我是否应该通过过滤器,然后使用一些设计模式来改变行为,但这将使我的过滤器相当复杂..或者可能是我没有考虑弹簧和DI的一些技巧,所以我可以使我的代码更清洁.最简单的方法是在每种方法中都有一些策略模式,它们会有不同的版本,但它似乎也不太干净:-(

ams*_*ams 3

我强烈建议阅读 Apigee 上的书籍和博客http://offers.apigee.com/api-design-ebook-bw/我发现它为我设计网址和进行错误处理提供了非常实用的建议。

http://www.stormpath.com/blog/spring-mvc-rest-exception-handling-best-practices-part-2有一篇非常棒的文章,介绍了如何配置 spring mvc 来对 Restful 应用程序进行通用错误处理。

至于对接受标头进行过滤,这很容易做到,因为 Spring 允许您根据过滤器缩小处理程序方法映射的范围,如下面请求映射中的 headers= 所示。

@RequestMapping(value="/narrow/headers/{name}/{email}/{customerNumber}",
        method={RequestMethod.POST,RequestMethod.GET},
        headers="Referer=http://localhost:8080/SpringMVC/request-mappings.html")
public ResponseEntity<String> narrowOnHeaders(
        @PathVariable("name")String name, 
        @PathVariable("email") String email, 
        @PathVariable("customerNumber") Integer customerNumber,
        @RequestHeader("Referer") String referer
    )
Run Code Online (Sandbox Code Playgroud)

  • 损坏的 URL:“在此服务器上找不到请求的 URL /api-design-ebook-bw/。” (3认同)