void操作需要在assertj-swagger

时间:2016-09-20 17:00:05

标签: spring-boot swagger swagger-2.0 springfox assertj

我定义了以下Spring Boot(1.3.1)@RestController

@RequestMapping(value = "/blah", method = DELETE)
@ResponseStatus(NO_CONTENT)
public void blah() {...}

并且正在使用assertj-swagger来验证上面的以下swagger规范:

'/blah':
  delete:

由于以下原因,已实施操作的验证(断言)失败:

[Checking 'produces' of 'DELETE' operation of path '/blah'] 
 Expecting null or empty but was:<["*/*"]>

但我无法理解为什么produces MediaType.ALL是我们试图用Swagger描述的void方法时需要的?

任何想法都会受到高度赞赏,似乎无关必须将其添加到我们所有记录的API中......

谢谢和问候。

1 个答案:

答案 0 :(得分:1)

Http是a request/response protocol。因此,即使您的操作返回void,仍然存在http响应;即使它的Content-Length为0(无效)。这就是它被建模为MediaType.ALL(读取任何媒体类型或没有特定媒体类型)

的原因