在Spring Boot中描述String swagger响应模式

问题描述

我创建了一个控制器,该控制器可以按字符串返回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类相对应的响应模式,而不是字符串。