Max*_*ola 6 swagger swagger-ui spring-boot springfox
我是 Swagger.io 的新手,也是 Spring Fox 的新手。我遇到的问题是,由于某种原因,一个对象没有正确引用其模型。
错误是因为 JSON 中的结果如下:
"schema": {
"$ref": "#/definitions/Error-ModelName{namespace='online.staffmanager.backend.auth.model.dto', name='UserChangeSet'}"
}
Run Code Online (Sandbox Code Playgroud)
如果我将其更改为:
"schema": {
"$ref": "#/definitions/UserChangeSet"
}
Run Code Online (Sandbox Code Playgroud)
它确实有效。我不知道为什么注释会这样映射。
我的注释:
@Operation(
tags = "auth",
summary = "Create a new User Account",
responses = {
@ApiResponse(
responseCode = "200",
content = @Content(schema = @Schema(implementation = TokenInfo.class))),
@ApiResponse(
responseCode = "201",
content = @Content(schema = @Schema(implementation = UserChangeSet.class)))
}
)
Run Code Online (Sandbox Code Playgroud)
SpringFox配置:
@Configuration
@EnableSwagger2
@EnableWebMvc
public class SpringFoxConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
}
Run Code Online (Sandbox Code Playgroud)
注意:我使用的是Springfox 3.0.0。提前致谢!
您必须向 Bean 添加一项配置。
这里是需要添加的配置:
.additionalModels(
typeResolver.resolve(TokenInfo.class),
typeResolver.resolve(UserChangeSet.class)
)
Run Code Online (Sandbox Code Playgroud)
这是完整的代码:
@Configuration
@Import(SpringDataRestConfiguration.class)
public class SwaggerUIConfig {
@Bean
public Docket api(TypeResolver typeResolver) {
return new Docket(DocumentationType.SWAGGER_2)
.additionalModels(
typeResolver.resolve(TokenInfo.class),
typeResolver.resolve(UserChangeSet.class)
)
.select()
.apis(RequestHandlerSelectors.basePackage("com.projectname.controllers"))
.paths(PathSelectors.any())
.build()
.useDefaultResponseMessages(false);
}
}
Run Code Online (Sandbox Code Playgroud)
注意:@EnableSwagger2 注解建议在 3.0 版本中删除。您可以参考http://springfox.github.io/springfox/docs/current/#migration-from-existing-2-x-version
我希望可以帮助你。
| 归档时间: |
|
| 查看次数: |
10762 次 |
| 最近记录: |