【问题标题】:Springfox Swagger: Could not resolve pointer: /definitions/InstantSpringfox Swagger:无法解析指针:/definitions/Instant
【发布时间】:2019-07-22 11:07:33
【问题描述】:

我们有一个 SpringBoot 项目,我们正在使用 Springfox Swagger 来生成 API 文档。

有一个响应类包含:

private Collection<Instant> quartzScheduledDates;

当我运行 SwaggerUI 时,我收到以下消息:

错误解决程序错误在 路径./subscriptions/{subscriptionIdStr}.get.responses.200.schema.properties.quartzScheduledDates.items.$ref 无法解析引用,因为:无法解析指针: /definitions/Instant 在文档中不存在

我们正在使用 Springfox Swagger 2.9.2、SpringBoot 2.1.2-RELEASE。

我也尝试过在 springfox 中使用 Docket 技巧,如 Springfox Documentation 所示:

    docket.directModelSubstitute(Instant.class, java.util.Date.class);

没有成功 - 相同的错误消息。

我做错了什么?

【问题讨论】:

标签: java spring-boot swagger springfox


【解决方案1】:

我能够复制这个问题。

这可以通过在为您的 SWAGGER 创建 Docket 时定义新的 AlternateTypeRules 来解决。

下面是sn-p。

Docket docket= new Docket(DocumentationType.SWAGGER_2)
            .alternateTypeRules( AlternateTypeRules.newRule(
                    typeResolver.resolve(Collection.class, Instant.class),
                    typeResolver.resolve(Collection.class, Date.class), Ordered.HIGHEST_PRECEDENCE))
            .select()
            .apis(RequestHandlerSelectors.basePackage("com.test"))
            .paths(PathSelectors.any())
            .build();

【讨论】:

  • 谢谢 :) @VladDinulescu
  • 在我的例子中为 List 工作:TypeResolver typeResolver = new TypeResolver(); return new Docket(DocumentationType.SWAGGER_2) .alternateTypeRules(AlternateTypeRules.newRule( // 我的模型 List typeResolver.resolve(List.class, LocalDate.class), // 替代 JSON 定义 typeResolver.resolve(List.class, String.class), Ordered.HIGHEST_PRECEDENCE)) ...
  • typeResolver 类型为com.fasterxml.classmate.TypeResolver
【解决方案2】:

就我而言,我必须非常具体。我有:

TreeSet<ZonedDateTime>

那我得专门补充一下:

AlternateTypeRules.newRule(
    typeResolver.resolve(TreeSet.class, ZonedDateTime.class),
    typeResolver.resolve(TreeSet.class, Date.class), Ordered.HIGHEST_PRECEDENCE))

它确实在 typeResolver 中使用父接口,例如:CollectionSet 等。 (顺便说一下,TypeResolver 是@AutoWired,如果您想知道它来自哪里。请参阅文档:https://springfox.github.io/springfox/docs/current/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-19
    • 1970-01-01
    • 1970-01-01
    • 2017-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-28
    相关资源
    最近更新 更多