如何验证RestHeader控制器端点的RequestHeader

时间:2018-10-18 14:42:24

标签: java rest spring-boot bean-validation request-headers

我编写了一个带有端点的控制器类,该端点接受标头作为其请求的一部分

@RestController
@RequestMapping("<mapping-path>")
public class MyController {
...
@GetMapping("<path-to-the-endpoint>")
public MyObject getMyObject(@RequestHeader("headerName") String headerName) {
    //do something with the header here
}
...
}

端点工作正常,但是当提供具有空值的标头时,我想测试其行为。我还想对getMyObject方法进行编码,以使其避免将null值传递到标头中,并返回一条警告,指出标头字段不能为空。我尝试使用在端点上带有MockMvc get()的集成测试来对此进行测试,但是如果我将空值赋给标头作为该get请求的一部分,则测试将失败,因为它显示“ values不能为空”。是否可以在此处使用JSR-303验证方法?即@Valid@NotNull

1 个答案:

答案 0 :(得分:0)

我认为参数化的请求标头应该对您有用。

尝试这样声明您的方法。

@GetMapping("<path-to-the-endpoint>")
public MyObject getMyObject(@RequestHeader(value="headerName") String headerName) {
    //do something with the header here
}

要对此进行测试,可以在MockMvc中添加标题。

post("/your end point").header("headerName", "userId")