在Spring Boot中POST / GET请求参数验证

时间:2017-07-26 12:28:03

标签: spring-boot

我正在使用春季靴子。我想验证POST请求参数。所以我通过@Validated注释获得了热情,但这需要为Every API创建一个不同的类。我该如何编写代码?

例如,这是我的api

@RequestMapping("/tags/{tagId}/{tagParentId}")

public Response<Demo> a(@PathVariable int tagId, @PathVariable int tagParentId){ 
   ... code
}


@RequestMapping("/data/{courseId}/{instId}")
public Response<Demo> b(@PathVariable int courseId, @PathVariable int instId){ 
   ... code
}

我应该如何更改代码以为API添加params验证,这样我就不需要创建两个不同的验证类?只有一个类,然后我可以为不同的API添加不同的功能。

1 个答案:

答案 0 :(得分:1)

应该使用@Validated来检查参数是否语法正确。

当你使用int值时,这已经由spring完成了。 如果tagId不是有效的int,则客户端将已收到Http错误代码。

验证是否存在具有给定tagId的标记在您的代码中隐式完成,您不需要额外的验证器。

如果您从数据库中读取标签,并且找不到tagId的标签,则应该

return new ResponseEntity(HttpStatus.NOT_FOUND);

来自您的控制器方法。

您可能需要将控制器方法的返回类型更改为公共超类或仅更改为Object,以允许返回ResponseEntity。

它也可以在控制器方法中抛出异常,并配置spring以返回关于HttpStatus的内容。 见exception-handling-for-rest-with-spring