2017-07-26 172 views
0

我正在使用spring引导。我想验证POST请求参数。所以我通过@Validated注释获得了良好的效果,但是这需要为每个API创建一个不同的类。我应该如何编写我的代码?POST/GET请求在Spring Boot中的参数验证

至于例如,这是我的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 
} 

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

回答

0

@应该使用@Vididated来检查一个参数是否是句法正确的。

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

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

如果从数据库中读取例如标签,你不能找到一个标签为标签识别,你应该

return new ResponseEntity(HttpStatus.NOT_FOUND); 

从控制器的方法。

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

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