问题描述
我有以下带注释的控制器用于摇摇欲坠:
@PostMapping("/getMediaDataProduct/V2")
@ResponseBody
@ApiOperation(value = "get media data product v2")
@ApiResponses({@ApiResponse(code = 200,message = "Successful",response = MediaDataProductResponseV2.class)})
@ApiImplicitParams(value = {
@ApiImplicitParam(name = "xxxxx",value = "xxxx",paramType = "header",required = true),@ApiImplicitParam(name = "xxxx",paramType = "header"),// @ApiImplicitParam(name = "xxxxxx",value = "xxx",@ApiImplicitParam(name = "xxxxxx",value = "xxxxx",@ApiImplicitParam(name = "xxxxxxx",value = "xxxxxxxx",required = true)})
public ResponseEntity getMediaDataProductV2(@RequestBody final String request,@RequestHeader final HttpHeaders headers) {
Slogger.get().debug("/getMediaDataProduct/V2: this.mediaDataService: " + this.mediaDataService);
MediaDataProductResponseV2 response = mediaDataService.getMediaDataProductV2(request);
HttpStatus status = getHttpStatus(response.getStatusMessages(),response.getSystemErrors());
List<StatusMessage> statusMessages = appendSuccessstatusMessage(response.getStatusMessages(),status);
if(statusMessages !=null) {
response.setStatusMessages(statusMessages);
}
return new ResponseEntity<>(response,new HttpHeaders(),status);
}
更新:我试图在许多论坛上对此进行研究,但似乎没有找到答案。 “如何像我对ApiResponses一样,通过使用大方的注释来指定请求主体类?”。在swagger UI中为主体创建了一个默认参数,但是不知道如何通过引用请求主体类来指定它。
解决方法
如果我正确地理解了您的问题,则需要在swagger定义中显示一个响应类型。大部分时间Swagger都会自动将您的方法返回类型映射为响应类型。
但是,当它是泛型类(如您的情况,其ResponseEntity
)时,它不会这样做。
如果您可以将返回类型设为ResponseEntity<MediaDataProductResponseV2>
之类,它应该可以工作。