首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Swagger @OpenAPIDefinition不做任何事情

Swagger @OpenAPIDefinition不做任何事情
EN

Stack Overflow用户
提问于 2021-09-22 11:49:35
回答 2查看 826关注 0票数 0

因此,我有一个简单的Spring Boot REST API,它工作得很好,现在我为ui和核心添加了一些swagger依赖项,并使用@ApiIgnore或@Operation等标记进行了一些测试,它们都工作得很好,并且都在http://localhost:8080/swagger-ui/#/中进行了更新

现在我正在尝试通过@OpenAPIDefinition标签更新API信息,在我的应用程序类中如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
@OpenAPIDefinition(
        info = @Info(
            title = "the title",
            version = "0.0",
            description = "My API",
            license = @License(name = "Apache 2.0", url = "http://foo.bar"),
            contact = @Contact(url = "http://gigantic-server.com", name = "Fred", email = "Fred@gigagantic-server.com")))

现在我已经阅读了here,spring boot应用程序应该执行类扫描,识别@OpenAPIDefinition bean,并在http://localhost:8080/v3/api-docs中更新生成的json。但事实并非如此,我也尝试过用openapi.yaml文件设置该信息,但也没有成功。

我怀疑这可能与我的依赖有关,因为我刚刚开始大摇大摆,仍然有点迷失,可能搞混了什么,我把我的pom.xml留在这里:

代码语言:javascript
代码运行次数:0
运行
复制
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.4</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>11</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb-reactive</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webflux</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>io.projectreactor</groupId>
            <artifactId>reactor-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>de.flapdoodle.embed</groupId>
            <artifactId>de.flapdoodle.embed.mongo</artifactId>
            <scope>test</scope>
        </dependency>
        
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-boot-starter</artifactId>
            <version>3.0.0</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>3.0.0</version>
        </dependency>
        <dependency>
          <groupId>io.swagger.core.v3</groupId>
          <artifactId>swagger-jaxrs2</artifactId>
          <version>2.1.2</version>
        </dependency>
        <dependency>
          <groupId>io.swagger.core.v3</groupId>
          <artifactId>swagger-jaxrs2-servlet-initializer-v2</artifactId>
          <version>2.1.2</version>
        </dependency>

        
        
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

例如,我对如何继续感到有点困惑,也不明白swagger如何识别@ApiIgnore标签,而忽略@OpenAPIDefinition标签。正如我所说的,我对整个事情和堆栈溢出都是新手,所以如果我忘记添加任何相关的代码,请原谅,谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-09-23 08:28:03

所以在做了很多不同的事情之后,我找到了这个guide,它解释了如何改变API信息,简而言之,我在我的EmployeeController类中添加了一个@Api(tags = "Employee"),然后在我的应用程序类中添加了:

代码语言:javascript
代码运行次数:0
运行
复制
@Bean
      public Docket docket() {
        return new Docket(DocumentationType.OAS_30)
            .apiInfo(new ApiInfoBuilder()
                .title("Employee API")
                .description("A CRUD API to demonstrate Springfox 3 integration")
                .version("0.0.1-SNAPSHOT")
                .license("MIT")
                .licenseUrl("https://opensource.org/licenses/MIT")
                .build())
            .tags(new Tag("Employee", "Endpoints for CRUD operations on employees"))
            .select().apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))
            .build();
      } 

这似乎解决了问题,我现在想知道如果我有多个控制器会发生什么,我希望这对处于困境中的任何人都有帮助,总体问题似乎是这是一种与springfox相关的方法来更改API文档,而之前的方法是与swagger-core相关的吗?正如我所说的,我是这个世界的新手,所以如果有人能告诉我为什么它不能工作,那就太棒了,谢谢!

票数 0
EN

Stack Overflow用户

发布于 2021-09-22 19:38:41

尝试删除一些不必要的依赖关系:

代码语言:javascript
代码运行次数:0
运行
复制
<dependency>
  <groupId>io.springfox</groupId>
  <artifactId>springfox-swagger-ui</artifactId>
  <version>3.0.0</version>
</dependency>
<dependency>
  <groupId>io.swagger.core.v3</groupId>
  <artifactId>swagger-jaxrs2</artifactId>
  <version>2.1.2</version>
</dependency>
<dependency>
  <groupId>io.swagger.core.v3</groupId>
  <artifactId>swagger-jaxrs2-servlet-initializer-v2</artifactId>
  <version>2.1.2</version>
</dependency>

springfox-boot-starter应该已经把它们带进来了。

如果这不起作用,您可以随时执行以下操作:

代码语言:javascript
代码运行次数:0
运行
复制
@Configuration
public class SwaggerConfiguration {

    @Bean
    public OpenAPI openAPI() {
        return new OpenAPI()
                .info(new Info().title("the title").version("0.0").description("My API")
                    .contact(new Contact().name("Fred").url("http://gigantic-server.com").email("Fred@gigagantic-server.com")));
    }

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69283628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档