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

让swagger-ui显示我的代码生成API

汪兴旺
2023-03-14

我在做一个springboot项目。我们先做API,所以我们从API生成代码。亚马尔。我们正在使用openapi 3.0。界面生成得很好,但当我们浏览到我们的招摇过市的ui URL时,它说规范中没有定义任何操作!

详情如下:

@Configuration
@RequiredArgsConstructor
@EnableSwagger2
public class SwaggerConfig {

  private final BuildProperties buildProperties;

  @Bean
  public Docket docketConfig() {
    return new Docket(DocumentationType.SWAGGER_2)
        .select()
        .apis(RequestHandlerSelectors
            .basePackage("com.xyz.infrastructure.rest.spring.resource"))
        .build().apiInfo(apiInfo());
  }

  private ApiInfo apiInfo() {
    return new ApiInfoBuilder()
        .title(buildProperties.getName())
        .version(buildProperties.getVersion())
        .build();
  }
}

我们的结构是:

com.xyz.infrastructure.rest.spring|||-config|-SwaggerConfig|-spec//自动生成|-dto//自动生成|-在spec中找到的接口的资源//实现

我们错过了什么?

我们正在使用:

<dependency>
  <groupId>io.swagger.codegen.v3</groupId>
  <artifactId>swagger-codegen</artifactId>
  <version>3.0.21</version>
</dependency>
<dependency>
  <groupId>io.springfox</groupId>
  <artifactId>springfox-swagger2</artifactId>
  <version>2.9.2</version>
</dependency>
<dependency>
  <groupId>io.springfox</groupId>
  <artifactId>springfox-swagger-ui</artifactId>
  <version>2.9.2</version>
</dependency>

谢谢你!

共有2个答案

越心水
2023-03-14

我们终于成功了。以下是为我们做到的:

Springfox版本3:

<dependency>
   <groupId>io.springfox</groupId>
   <artifactId>springfox-boot-starter</artifactId>
   <version>3.0.0</version>
</dependency>

使用io。大摇大摆科德根。v3插件。

这个昂首阔步的配置:

@Configuration
@EnableOpenApi
public class SwaggerConfig {

  @Bean
  public Docket docketConfig() {
    return new Docket(DocumentationType.OAS_30)
        .select()
        .apis(RequestHandlerSelectors
            .basePackage("com.xyz.infrastructure.rest.spring.resource"))
        .build();
  }

}

并确保资源中的类具有@RestController注释。

辛盛
2023-03-14

我以前是这样的:

@Configuration
@EnableSwagger2
public class SwaggerConfig extends WebMvcConfigurationSupport {
    @Bean
    public Docket productApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                //.apis(RequestHandlerSelectors.any())
                .apis(RequestHandlerSelectors.basePackage("uz.xb.qr_project"))//*** base package
                .paths(PathSelectors.any())
                .build()
                .apiInfo(metaData());
    }

    private ApiInfo metaData() {
        return new ApiInfoBuilder()
                .title("Spring Boot REST API")
                .description("\"Spring Boot REST API for Online Store\"")
                .version("1.0.0")
                .license("Apache License Version 2.0")
                .licenseUrl("https://www.apache.org/licenses/LICENSE-2.0\"")
                .contact(new Contact("John Thompson", "https://springframework.guru/about/", "john@springfrmework.guru"))
                .build();
    }

    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("swagger-ui.html")//**address of swagger ui
                .addResourceLocations("classpath:/META-INF/resources/");


        registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");
    }
}

ApiController.java

@RestController
@RequestMapping
public class ApiController {

    @Autowired
    private ApiService apiService;

    @GetMapping
    public String swagger(){
        return "<!DOCTYPE html>\n" +
                "<html lang=\"en\">\n" +
                "<head>\n" +
                "    <meta charset=\"UTF-8\">\n" +
                "    <title>REST API LIST</title>\n" +
                "    <meta http-equiv=\"refresh\" content=\"0; url=/qr_online/swagger-ui.html\" />\n" +
                "</head>\n" +
                "<body>\n" +
                "<a href=\"qr_online/swagger-ui.html\">REST API LIST</a>\n" +
                "</body>\n" +
                "</html>";
    }

  //Or you can use like this inside controller
  /*
    @GetMapping
    public void redirect(HttpServletResponse response) throws IOException {
        response.sendRedirect("swagger-ui.html");
    }
  */

}

波姆。xml

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>
 类似资料:
  • 我有一个Spring Boot应用程序,其中API被指定为OpenAPI 3.0.2 YAML文档。我使用openapi生成器maven插件从规范生成代码http://localhost:8080/swagger-用户界面。html,它显示:“规范中未定义任何操作!” 在规范中,我有: 这导致控制器类中出现以下情况: 如果我加载openapi定义。编辑亚马尔。大摇大摆io,它显示了预期的定义。 如

  • 我有一个具有两个endpoint的控制器类 一个有一个参数,一个没有,两者都起作用。 如果我使用curl或web浏览器访问endpoint http://localhost:8081/test 返回 无参数测试 和 http://localhost:8081/test?param=1 返回 参数测试 但是,swagger ui只显示没有参数的用户界面。 如果我使用参数将请求的请求映射中的值更改为

  • 问题内容: 我有使用Java的JAX-RS / Jersey开发的REST API。我想为其转换/生成基于Swagger的UI文档。有人可以简单的方式告诉我精确的步骤吗?很抱歉,他们网站上的步骤对我来说并不清楚。 问题答案: 有几种方法可以将swagger-core与您的应用程序集成,但是根据您的描述,我将按照https://github.com/swagger- api/swagger-core

  • 我有一个spring的网络应用程序,我增加了swagger和swagger-UI。我添加了一个虚拟类来测试Swagger: 构建/部署之后,我可以在swagger页面上看到虚拟类(参见附件1)。问题是,“列表操作”没有显示任何内容。原始输出如下: 我想,问题是一个缺失的标签“操作”或类似的东西……但我不确定(也不知道,如何修复这一点)。有什么建议吗?

  • 我正在尝试使用 https://github.com/swagger-api/swagger-codegen 生成 nodejs 客户端 sdk 这是我使用的命令 但是对于我需要生成的实际sdk,swagger规范被拆分为两个不同的json文件,我想为两者创建一个sdk。我如何使用Swagger-codecen做到这一点,同时使用多个swagger json?

  • 我正在努力创建rest客户端,我将调用一个API来提供这个大的json输出。我想知道如何通过输入这个json来自动创建Pojo类来晃动代码gen,并让它为我创建我的pojo类,这将节省手动时间。这是我尝试过的 要为生成PHP客户端,请执行以下操作:http://petstore.swagger.io/v2/swagger.json,请运行以下命令: (如果您使用的是Windows,请将最后一个命令