在 Spring 引导中描述 String swagger 响应模式
Describing String swagger response schema in Spring Boot
我已经通过字符串创建了 returns 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", response = ErrorDto.class),
@ApiResponse(code = 500, message = "Internal error")
})
@ApiOperation(value = "....", tags = {"Alarms"})
@PostMapping(value = "")
public String getValuesByJsonString(@RequestBody Request request) {
eturn MyService.getMyData(request);
}
}
由于问题,我在 swagger 中看到响应为“字符串”,我希望看到 json 转换后由 jackson 返回的结构。
是否可以直接指定这个结构???
您可以根据您的响应结构声明 Response
class,例如
public class Response {
private int status;
private String data;
// setter getter
}
现在将 @ApiOperation
中的 Response
class 称为
@ApiOperation(value = "....", tags = {"Alarms"}, response = Response.class)
现在将生成对应于 Response
class 的响应模式,而不是字符串。
我已经通过字符串创建了 returns 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", response = ErrorDto.class),
@ApiResponse(code = 500, message = "Internal error")
})
@ApiOperation(value = "....", tags = {"Alarms"})
@PostMapping(value = "")
public String getValuesByJsonString(@RequestBody Request request) {
eturn MyService.getMyData(request);
}
}
由于问题,我在 swagger 中看到响应为“字符串”,我希望看到 json 转换后由 jackson 返回的结构。
是否可以直接指定这个结构???
您可以根据您的响应结构声明 Response
class,例如
public class Response {
private int status;
private String data;
// setter getter
}
现在将 @ApiOperation
中的 Response
class 称为
@ApiOperation(value = "....", tags = {"Alarms"}, response = Response.class)
现在将生成对应于 Response
class 的响应模式,而不是字符串。