为 RESTful 服务实现验证

2025年1月17日 | 阅读时长:4分钟

验证是所有服务的常见需求。我们将讨论 Java Validation API,以便在我们的 bean 文件中添加验证。当我们收到创建用户的请求时,我们应该验证其内容。如果无效,我们应该返回正确的响应。

让我们看看如何验证请求。

步骤 1: 打开 UserResource.java 文件。

步骤 2: 添加 @Valid 注解。它是一个 Javax validation API。它的默认 classpath 是 spring-boot-starter-web。

UserResource.java

现在我们将在 User 类的 namedate of birth 上添加验证。假设 name 应该至少有五个字符,并且出生日期应该在过去,而不是现在。

步骤 3: 打开 User.java 文件。

步骤 4:name 变量的正上方添加 @Size(min=5) 注解。

步骤 5:dob 变量的正上方添加 @Past 注解。

User.java

步骤 5: 打开 Rest 客户端 Postman 并发送一个带有新用户名 Tony kPOST 请求。它返回 状态:201 Created

Implementing Validations for RESTful Services

现在我们发送另一个 POST 请求。但是名称应少于五个字符。它返回 状态:400 Bad Request

Implementing Validations for RESTful Services

当我们创建 RESTful 服务时,我们需要考虑消费者如何知道什么是错误的。为了解决这个问题,我们将添加一个方法 handleMethodArgumentNotValid(),该方法在 ResponseEntityExceptionHandler 类中定义。这是一个在发生错误请求时触发的方法。

步骤 6: 将上述方法复制并粘贴到 CustomizedResponseEntityExceptionHandler.java 文件中。

步骤 7: 通过添加注解 @Override 来覆盖该方法。

CustomizedResponseEntityExceptionHandler.java

步骤 8: 现在,我们通过 Postman 发送一个 POST 请求。它返回异常结构,其中包含消息 Validation failed for argument 和其他详细信息。

Implementing Validations for RESTful Services

用户很难理解该消息。 因此,现在我们将使用字符串 Validation Failed 自定义消息,而不是获取消息。

步骤 9: 再次发送一个 POST 请求。 它返回了我们自定义的消息。

Implementing Validations for RESTful Services

这对消费者可能有用。 现在我们再次自定义消息,使其更具错误性。

步骤 10: 打开 User.java 文件并在 @Size 注解中添加一个属性 message="Name should have at least 5 characters"

步骤 11: 再次发送一个 POST 请求。 它返回了我们指定的更具体的异常。

Implementing Validations for RESTful Services

我们可以通过遵循 BindingResult 接口来进一步自定义异常。 异常消息种类繁多。 validation-api-2.0.1.Final.jar 中定义了以下验证类。

Implementing Validations for RESTful Services