当前位置: 首页 > 知识库问答 >
问题:

Swagger不会获取自定义的API信息,始终显示默认值

吕鹏
2023-03-14

当我尝试将 Swagger 集成到一个非常简单的Spring启动 REST 应用程序 Swagger-UI 中时.html不会显示和获取我自定义的 API 信息。我应该如何更改以下代码,以便 Swagger UI 页面将显示自定义的 API 信息?我也无法调试 SwaggerConfig 类,将断点放入,但当作为Spring启动应用运行时,断点不会停止。

我在pom.xml:

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.7.0</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.7.0</version>
</dependency>

我的SwaggerConfig类:

@Configuration
@EnableSwagger2
public class SwaggerConfig {

    @Bean
    public Docket messageApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("cool-report-api")
                .apiInfo(apiInfo())
                .select()
                .paths(messageApiPaths()).build();
    }

    private Predicate<String> messageApiPaths() {
        return or(regex("/api/topics.*"), regex("/api/message.*"));
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("Cool Message Receiver API")
                .description("Cool Message Receiver REST API Reference")
                .termsOfServiceUrl("http://www.cool-message-receiver.com")
                .contact(new Contact("John Smith", null, "john.smith@cool.com"))
                .license("Cool Proprietary Software")
                .licenseUrl("www.cool-message.com")
                .version("0.1.0")
                .build();
    }

}

但在我启动后:运行上述代码,定制的API信息似乎不起作用,Swagger仍然显示默认的“API Documentation”标题和“Apache 2.0”许可证等。我现在看到的是:

共有2个答案

卫飞鹏
2023-03-14

apiInfo应该在构建后调用,如下所示:

@Bean
public Docket messageApi() {
    return new Docket(DocumentationType.SWAGGER_2)
            .groupName("cool-report-api")
            .select()
            .paths(messageApiPaths())
            .build()
            .apiInfo(apiInfo());
}
邵璞
2023-03-14

我觉得问题是messageApisPath()。

确保添加以下库:

    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>16.0.1</version>
    </dependency>

它包含许多谓词函数。确保您的“or”来自那里。

以下对我有用

private Predicate<String> messageApiPaths() {
    return Predicates.or(PathSelectors.regex("/api/topics.*"), PathSelectors.regex("/api/message.*"));
}

谢谢

 类似资料:
  • 我已经成功地将swagger集成到我的项目中 现在,我可以点击URLhttp://localhost:8080/myapp/v2/api-docs,看到返回的描述REST API的json。例如。 然后我拉入了swagger-ui依赖项

  • 好吧,这是一个两部分的问题,我试图最好地解释我的疑问: 代码很简单,用户不断输入成绩,程序会对其进行计数,一旦用户给出EOF条目,程序会在最后显示每个成绩的最终计数。 1) 当我运行代码时,程序会正确地跟踪我输入的每个等级的计数,但总是落在默认情况下,即使输入是正确的!为什么会这样? 2) 因此,我不完全确定“cin.get()”是如何工作的,但如果我是对的,它会接受用户输入的任何内容的第一个字符

  • Swagger UI 不显示请求参数的验证信息。我想显示参数的最小值,最大值,格式,模式(正则表达式)。有谁知道我在Swagger UI上表达参数验证信息的方式吗?

  • 我正在尝试在Spring中使用MessageSource注入文本消息。我编写的程序编译良好,但它总是打印出默认消息,而不是从. Properties文件中获取正确的值。我一点线索也没有。 下面是尝试注入文本的Circle类: 下面是bean配置文件的一部分: 我存储问候语和画图。圈入消息。属性文件,并编写了一个主类。但输出总是: 有人知道我的情况可能会出什么问题吗? 更新感谢您的建议。我正在调试,

  • 我正在发出警报,服务由警报启动。我希望服务接收额外数据,因此在谷歌搜索中,我将标志设置为Intent。FILL_IN_DATA。下面是我的代码。(仅显示重要部分)(我有几种警报模式,调用不同的服务) } 服务端代码(编辑:此代码在BService类中。AService不需要接收额外代码。) 但是,结果始终为-1,这意味着没有额外收到。 我的代码有什么问题?我在谷歌上搜索了几个小时,没有任何希望。

  • 我在UserProfile中添加自定义字段UserType作为字符串。我想更改我的获取值,并将该值传递到TempData中。 这是我在AccountController上的代码: 我对该方法进行了调试,以下是我掌握的信息: 有人对此有什么解决办法吗?我是ASP. NET的新手,但也许如果我实现自定义成员资格,它会工作,你觉得呢?你能给我一些例子吗?谢谢你们。 解决方案如下: `[HttpPost]