【问题标题】:Could not resolve pointer: /definitions/Error-ModelName无法解析指针:/definitions/Error-ModelName
【发布时间】:2020-12-19 01:57:51
【问题描述】:

我是 Swagger.io 的新手,也是 Spring fox 的新手。我遇到的问题是,由于某种原因,一个对象没有正确引用到它的模型。

用户界面中的错误:

错误是因为它在 JSON 中是这样结束的:

"schema": {
"$ref": "#/definitions/Error-ModelName{namespace='online.staffmanager.backend.auth.model.dto', name='UserChangeSet'}"
}

如果我将其更改为:

"schema": {
"$ref": "#/definitions/UserChangeSet"
}

确实有效。而且我不知道为什么注释会这样映射它。

我的注释:

 @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)))
            }
    )

SpringFoxConfig:

@Configuration
@EnableSwagger2
@EnableWebMvc
public class SpringFoxConfig {

    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build();
    }

}

注意:我使用的是 Springfox 3.0.0。 提前致谢!

【问题讨论】:

标签: spring-boot swagger swagger-ui springfox


【解决方案1】:

您必须向 Bean 再添加一项配置。

这里是需要添加的配置:

.additionalModels(
     typeResolver.resolve(TokenInfo.class),
     typeResolver.resolve(UserChangeSet.class)
 )

这是完整的代码:

@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);

     }
}

注意:建议在 3.0 版本中删除 @EnableSwagger2 注解。可以参考http://springfox.github.io/springfox/docs/current/#migrating-from-existing-2-x-version

希望能帮到你。

【讨论】:

    猜你喜欢
    • 2019-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-15
    • 1970-01-01
    • 1970-01-01
    • 2018-11-01
    相关资源
    最近更新 更多