问题描述
我创建了一个控制器,该控制器可以按字符串返回json,所以当我使用@RestController批注时,它会将其转换为正确的json,并且可以正常工作。
@Api(tags = "Controller")
@RestController
@RequestMapping(value = "/controller",consumes = APPLICATION_JSON_VALUE,produces = APPLICATION_JSON_VALUE)
public class MyController {
private final MyService myService;
@Autowired
public MyController (MyService MyService ) {
this.MyService = MyService ;
}
@ApiResponses(value = {
@ApiResponse(code = 400,message = "Bad request",response = ErrorDto.class),@ApiResponse(code = 404,message = "Location id not found",@ApiResponse(code = 500,message = "Internal error")
})
@ApiOperation(value = "....",tags = {"Alarms"})
@PostMapping(value = "")
public String getValuesByJsonString(@RequestBody Request request) {
eturn MyService.getMyData(request);
}
}
问题是,我大摇大摆地将响应视为“字符串”,并且希望看到转换后由杰克逊返回的json结构。
是否可以直接指定此结构?
解决方法
您可以根据您的响应结构声明Response
类,例如
public class Response {
private int status;
private String data;
// setter getter
}
现在在Response
中将此@ApiOperation
类称为
@ApiOperation(value = "....",tags = {"Alarms"},response = Response.class)
现在将生成与Response
类相对应的响应模式,而不是字符串。