Java Swagger UI不显示来自自定义注释界面的响应模型
我正在尝试为招摇过市的文档定义全局响应。我有以下注释界面:Java Swagger UI不显示来自自定义注释界面的响应模型,java,spring-boot,swagger,Java,Spring Boot,Swagger,我正在尝试为招摇过市的文档定义全局响应。我有以下注释界面: import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponses; import org.springframework.web.bind.annotation.ResponseBody; import java.lang.annotation.*; @Documented @Target(ElementType.METHOD)
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import org.springframework.web.bind.annotation.ResponseBody;
import java.lang.annotation.*;
@Documented
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@ApiResponses(value = {
@ApiResponse(
code = 200,
message = "Successful status response"
),
@ApiResponse(
code = 401,
message = "Unauthorized",
response = Payload.Error.class
),
@ApiResponse(
code = 403,
message = "Forbidden",
response = Payload.Error.class
),
@ApiResponse(
code = 404,
message = "Not Found",
response = Payload.Error.class
),
@ApiResponse(
code = 500,
message = "General Server Error",
response = Payload.Error.class
),
})
@ResponseBody
public @interface PayloadResponse {
}
在我的控制器中,我使用如下界面:
@ApiOperation("Get user details after login")
@PayloadResponse
@GetMapping("/user")
Payload<User> fetchUser(
@ApiIgnore
@RequestHeader(HttpHeaders.AUTHORIZATION) String authorization
);
@ApiOperation(“登录后获取用户详细信息”)
@有效载荷响应
@GetMapping(“/user”)
有效载荷获取用户(
@阿皮诺
@RequestHeader(HttpHeaders.AUTHORIZATION)字符串授权
);
这里的Payload.Error
是Payload
的一个内部类。但无论如何,我也尝试了其他一些类,如:String、Map等。但是,swagger ui始终显示空响应:
从这一点开始,我怎样才能做到尽可能少的更改?Springfox 3.0默认使用v3模型,但您使用的是
io.swagger.annotations.ApiResponses
而不是io.swagger.v3.oas.annotations.responses.apirresponses
和io.swagger.annotations.ApiResponse
而不是io.swagger.v3.oas.annotations.responses.ApiResponse
此问题已记录在 但解决办法也很简单。只需添加一个属性就可以用v2模型覆盖v3模型
springfox.documentation.swagger.use-model-v3=false
它就像一个符咒。使用@PayloadResponse
和端点处的直接注释
我希望这是你想要的。
我正在使用springfox-Swagger 2 v3.0.0。ModelRef在该版本中已被弃用。而这不是我想要的答案。我的应用程序中有8个微服务,以后可能还会有更多。我不想在每个服务的招摇过市配置中设置全局响应消息。我想在全球范围内管理全局响应,最好使用注释之类的内容。@Dipu我已经更新了答案,希望这是您想要的答案。