我使用Spring 3.2 MVC / Tomcat 7.4 / PostgreSQL编写的简单REST API原型。
现在我在想什么是解决这些问题的最佳方法:
问题3我可以通过检查数据和响应正确的HTTP头(HTTP 400或HTTP 404因为某些输入数据丢失而找不到数据)来解决,但我不知道如何解决(在Spring中)问题1和2.
处理此类异常的最佳做法是什么?
答案 0 :(得分:1)
对于问题1 ,只返回404错误。
创建404例外:
@ResponseStatus(value = HttpStatus.NOT_FOUND)
public class ResourceNotFoundException extends RuntimeException {
}
现在从任何处理程序抛出它,客户端将收到404错误。
对于问题2 ,如果您正确设置过滤器,或者如果没有生成并发送405不允许的代码,框架将自动生成并返回错误页面。
对于问题3 以与问题1相同的方式返回400 Bad Syntax错误 - 或者生成更复杂的错误返回,详细说明问题。
答案 1 :(得分:1)
建议,当有人请求不存在的URL路径时返回的404的正文/标题应该与资源不存在时不同。这将允许您的客户确定他们是否正在调用错误的URL或资源是否存在。
答案 2 :(得分:0)
有关这些案例的说明及其背后的原因,请参阅http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html。