java - REST - 如何处理不必要的请求?

标签 java spring api rest spring-mvc

我正在使用用 Spring 3.2 MVC/Tomcat 7.4/PostgreSQL 编写的简单 REST API 原型(prototype)。

现在我在想解决这些问题的最佳方法是什么:

  1. 有人向不存在的资源发出请求
  2. 有人向资源发出请求,但使用了不受支持的 HTTP 方法
  3. 有人向资源发出请求,但提供的数据不正确或不完整

问题3我可能可以通过检查数据并响应正确的HTTP header 来解决(HTTP 400或HTTP 404,因为由于缺少某些输入数据而找不到数据),但我不知道如何解决(在Spring中)问题 1 和 2。

处理此类异常的最佳实践是什么?

最佳答案

对于问题 1,只需返回 404 错误。

创建 404 异常:

@ResponseStatus(value = HttpStatus.NOT_FOUND)
public class ResourceNotFoundException extends RuntimeException {

}

现在从任何处理程序中抛出该错误,客户端将收到 404 错误。

对于问题 2,如果您正确设置过滤器,框架将自动生成并返回错误页面,或者如果未生成并发送 405 不允许的代码。

对于问题 3,以与问题 1 相同的方式返回 400 Bad Syntax 错误 - 或生成详细说明问题的更复杂的错误返回。

关于java - REST - 如何处理不必要的请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20563091/

相关文章:

javascript - 从 api 响应中获取 pdf 文件

java - karate 如何模拟外部集成 URL

java - 绘制递归雪花

java - 是否可以将现有的 java android 应用程序与 AS3 android 应用程序连接?

java - 如何使用转换器?

api - 如何只允许自己的页面访问API?

java - 分配了null的Object数据类型的响应-Java

java - Android PackageManger.getLaunchIntentForPackage() 没有抛出记录的异常

java - 使用构造函数注入(inject)模拟 Spring 类

java - 如何将 "find or create"方法提取到抽象类? ( Spring 数据 Jpa)