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

SwaggerUI没有显示OpenApi codegen正确生成的文档化API

卢才艺
2023-03-14

我正在使用openapi生成器maven插件从YAML文档生成代码。

openapi: 3.0.3
info:
  title: Example API Doc
  description: Those are example endpoints.
  termsOfService: https://localhost:8080/termsOfService
  license:
    name: No license
    url: https://localhost:8080/license
  version: 1.0-SNAPSHOT
servers:
- url: https://localhost:8080/
- url: http://localhost:8080/
tags:
- name: example
  description: Example Tag
paths:
  /example:
    get:
      tags:
      - example
      summary: Example GET request
      description: Send example GET request
      operationId: exampleGetRequest
      responses:
        200:
          description: Successful operation
          content: {}
        400:
          description: Example Bad Request
          content: {}
        404:
          description: Example Not Found
          content: {}

以下是我如何配置maven插件以生成接口:

<plugin>
  <groupId>org.openapitools</groupId>
  <artifactId>openapi-generator-maven-plugin</artifactId>
  <version>4.1.1</version>
  <configuration>
    <generatorName>spring</generatorName>
    <inputSpec>${project.basedir}/src/main/resources/exampleApi.yaml</inputSpec>
    <apiPackage>com.example.openapi.generated.api</apiPackage>
    <modelPackage>com.example.openapi.generated.models</modelPackage>
    <generateSupportingFiles>false</generateSupportingFiles>
    <output>${project.basedir}</output>
    <configOptions>
      <dateLibrary>java8</dateLibrary>
      <java8>true</java8>
      <interfaceOnly>true</interfaceOnly>
    </configOptions>
  </configuration>
</plugin>

这个插件工作得很好,我得到这样的界面

@Api(value = "example", description = "the example API")
public interface ExampleApi {

    default Optional<NativeWebRequest> getRequest() {
        return Optional.empty();
    }

    @ApiOperation(value = "Example GET request", nickname = "exampleGetRequest", notes = "Send example GET request", tags = {"example",})
    @ApiResponses(value = {
            @ApiResponse(code = 200, message = "Successful operation"),
            @ApiResponse(code = 400, message = "Example Bad Request"),
            @ApiResponse(code = 404, message = "Example Not Found")})
    @RequestMapping(value = "/example", method = RequestMethod.GET)
    default ResponseEntity<Void> exampleGetRequest() {
        return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED);
    }
}

我正在用这个类实现我的接口:

@RestController
public class ExampleApiImpl implements ExampleApi {

    @Override
    public ResponseEntity<Void> exampleGetRequest() {
        return ResponseEntity.ok().build();
    }
}

我已经检查了解决方案,当我执行api调用时,我得到了HTTP状态200,但是当我尝试访问swagger ui页面时,这个apiendpoint没有被记录。有没有办法配置OpenAPI UI或SwaggerUI以指向我的yaml文档?

共有1个答案

法子昂
2023-03-14

如果它仍然是热门话题。

看起来您将OpenAPI UI用于Swagger 3注释,但OpenAPI生成器只能创建Swagger 2注释:OpenAPI代码生成器Maven插件使用旧的Swagger 2注释而不是Swagger 3注释

解决方案#1-使用Swagger v2用户界面。删除openApi依赖项并使用io。springfox:springfox-swagger2:{version}用于UI页面。

解决方案#2-覆盖生成v3注释的胡子模板。

 类似资料:
  • 我测试了简单的scala程序并用calac编译了它 如果我运行java-cp。;scala图书馆。“jar测试”,它工作正常。是的,scala图书馆。jar文件在同一个目录中。 这是我的清单文件manifest.txt 我用罐子cfm Test.jarmanifest.txt 如果我解压生成的测试。jar文件和打开清单文件,它不包含主类字段。因此,它不能与java-jar测试一起运行。罐子 我可以

  • 使用带有React应用程序的JSDocs的更好的文档插件。它旨在解析PropType,并从PropType获取信息,并将其放入数组中。确实如此。但在表中显示必需为'否',即使当proType标记为是必需的。 https://github.com/SoftwareBrothers/better-docs#usage-2 https://softwarebrothers.github.io/admin

  • CSV文件包含欧元的价格,比如,但是当我打开CSV文件时,Excel不会正确显示欧元符号。 我从Oracle数据库读取数据,将CSV文件内容存储在

  • 目前我们正在使用Aspose。NET库生成excel并导出为PDF。pdf由多种语言组成,如英语、汉语和泰米尔语。对于英语和汉语来说,这很好,但对于泰米尔语来说,它有拼写问题。 例如, "போல்" 的第一个和第二个字母将翻转。 我们尝试了“Latha”字体和“Arial Unicode MS”字体,文本显示,但字母翻转。我们也尝试过“InaiMathi”字体,但文本没有显示出来。 我也尝试使用不

  • 我无法在swagger ui中显示我的spring文档。这是我的配置: 我输入这个URL来访问接口:http://localhost:8080/swagger-ui.html 问题是它没有显示从以下位置加载的api-docs: "http://localhost:8080/v3/api-文档/招摇配置“ 状态:200。 但是如果我在url字段中输入这个,它会工作。。我的目标不是每次都进入这个。。

  • 我使用的是docx4j版本:“8.1.4”。 请帮我理解一下这里可能出了什么问题。