5

如果有人能指出一个使用版本控制组织 REST API 代码的良好示例/最佳实践(基于 uri,意味着“/v1/zzz”和“/v2/xxx”,或者甚至更好的依赖于 Accept 标头的东西),我很好奇-- 在 Java/Spring 项目中?恐怕我现在在我的项目中把它弄得太复杂了,所以向别人学习会很好。

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

4

1 回答 1

3

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

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
    )
于 2012-07-30T06:09:50.987 回答