标签: openapi-generator

我可以将环境变量传递给 openapi-generator 吗?

我正在运行openapi-generator generate -i swagger.yml -g html2 -o swagger-out,在我的swagger.yml文件中我有:

openapi: "3.0.0"

info:
  title: "User Web-Service"
  version: "0.1.0"

servers:
  - url: api.myhost.com
    description: "Server"
Run Code Online (Sandbox Code Playgroud)

但我想将服务器 URL 和信息版本作为参数变量传递。是否可以?谢谢

swagger openapi openapi-generator

5
推荐指数
1
解决办法
2498
查看次数

如何在 openapi-generator 中定义 List<Map<Integer, Set<String>>> 属性?

我定义了 OpenAPI 3.0 文档并使用 openapi-generator-cli-3.3.4.jar 来生成 Java 代码 (DTO)。但我无法解决这个案例:List<Map<Integer, Set<String>>>.

  1. Map<Integer, String>问题:

    • 据我所知,我可以使用架构对象additionalProperties定义地图类型。

    • OpenAPI 规范additionalProperties:值可以是布尔值或对象。内联或引用模式必须是模式对象,而不是标准的 JSON 模式。

    • 如上所述,我不能将 Map 键设置为整数,对吗?对这个问题有什么建议吗?

  2. set<String>set<List<String>>问题:我必须尝试一些努力:

测试 1:设置“uniqueItems”:true

 {
    "openapi": "3.0",
    "info": {
        "version": "1.0.0",
        "title": "Dr.First Schema",
        "license": {
            "name": "MIT"
        }
    },
    "components": {
        "schemas": {
            "Question": {
                "type": "object",
                "properties": {
                    "test": {
                        "type": "array",
                        "items":{
                            "type":"string"
                        }
                    }
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

生成 Java DTO …

java generics hashmap hashset openapi-generator

5
推荐指数
1
解决办法
963
查看次数

带有外部引用验证的 OpenApi

来自 Soap、XSD、WSDL 领域,我试图找到一种方法来重用使用 OpenApi v3 时定义的一些模式。

目录结构:

在此处输入图片说明

地址.yaml

openapi: 3.0.1
info:
  title: An include file to define an address
  version: 1.0.0
paths: {}
components:
  schemas:
    Address:
      type: object
      properties:
        id:
          type: integer
          format: int64
        streetName:
          type: string
        streetNumber:
          type: integer
          format: int32
        city:
          type: string
        postalCode:
          type: string
          format: date-time
        country:
          type: string
          description: Allowed countries (just on purpose 3 to have an enum)
          enum:
            - Romania
            - Belgium
            - Hungary  
Run Code Online (Sandbox Code Playgroud)

客户.yaml

   openapi: 3.0.1
info:
  title: An include file to …
Run Code Online (Sandbox Code Playgroud)

swagger openapi openapi-generator

5
推荐指数
1
解决办法
436
查看次数

如何从 OpenAPI 3.0 规范生成 Express + TypeScript API?

我使用 OpenAPI 3.0 为我的 REST API 服务器编写了规范。现在,与其手动编写大量重复代码,以及可能引入的所有错误,我想快速生成一个 expressjs 应用程序。我知道我可以从editor.swagger.io生成一个服务器应用程序,但是生成的代码是 javascript,所以我不能使用我的模型中的类型!

有没有一种工具可以根据 OpenAPI 3.0 规范生成用 typescript 编写的 express 应用程序?如果它可以创建所有文件夹、控制器并正确使用模型(以标准方式!),那就太棒了。那肯定会很快开始我的项目!

express typescript openapi-generator

5
推荐指数
2
解决办法
5190
查看次数

如何使用 openAPI Generator 和 Maven 跳过支持和元数据文件的生成?

我正在使用openapi-yaml带有 Maven的生成器将一个 swagger 文件转换为一个开放的 API v3 文件。

我想做的是将新文件直接放入某个目录。

然而,一些额外的文件生成,我不需要例如README.md.openapi-generator/VERSION.openapi-generator-ignore

是否可以禁用此行为并仅生成.yaml文件?

openapi-generator

5
推荐指数
2
解决办法
5520
查看次数

为什么鉴别器属性被序列化两次?

我在组件模式中使用 OpenAPI 3.0 继承,并且我有由 openapi-generator(使用 Jackson)生成的(Java)类。

为什么鉴别器属性在生成的 JSON 中被序列化两次?

这是一个 JHipster API-First 项目,它应该使用 openapi-generator 来生成 Java 模型(带有 Jackson 注释的 POJO)和 API 控制器(与 Spring 的 @Api 注释的接口)。

通过遵循 OpenAPI 3.x 文档/示例,似乎discriminator还必须在properties架构列表中指定所使用的属性。

这样,生成的 Java 类似乎与带有注释的多态类型处理的 Jackson 指南(此处)不同,其中用作鉴别器的属性不能出现在类中。相反,生成的代码还包含此属性作为具有 getter/setter 的类属性。这会导致 JSON 输出两次包含该属性,如下所示。

我还尝试从 OpenAPIproperties列表中删除该属性,而保留完整的discriminator部分;这样生成的代码对应于杰克逊的指导方针,序列化工作得很好。另一方面,我在反序列化过程中遇到错误,因为在目标类中找不到(已删除)属性。

遵循 OpenAPI 3.x 文档指南:

TicketEvent:
  type: object
  description: A generic event
  discriminator:
    propertyName: type
  required:
    - id
    - sequenceNumber
    - timestamp
    - type
  properties:
    id:
      type: integer
      format: int64 …
Run Code Online (Sandbox Code Playgroud)

java jackson swagger swagger-codegen openapi-generator

5
推荐指数
1
解决办法
3154
查看次数

如何使用 openapi-generator 生成 API 文档?

我是OpenAPI3.0.0 的新手。

我已经使用openapi-generator成功创建了一个 java 客户端库。

但是OpenAPIGenerator 允许生成 API 客户端库(SDK 生成)、服务器存根、文档。所以我想知道是否有任何命令或步骤可用于生成 HTML 文档以及自定义文档模板。

yaml api-doc openapi openapi-generator

5
推荐指数
1
解决办法
4253
查看次数

如何从 Avro Schema 生成 OpenAPI 模式

我正在查看 openapi-generator 以查看是否可以使用该工具从 avro 模式创建 OpenAPI 模式。查看文档,我无法弄清楚如何提供能够做到这一点的参数。我怎样才能做到这一点?

或者,是否有另一种方法可以使用任何在线工具或以编程方式从 avro 模式中获取 OpenAPI 模式?

我需要进行模式到模式转换的原因是我们使用 kafka 流进行消息传输,并且没有可以与 Swagger 一起使用来生成模式的 REST 端点。此外,生成的消息可能不包含来自 avro 架构的所有属性,并且不标识可选/强制属性。

谢谢

avro openapi openapi-generator

5
推荐指数
0
解决办法
636
查看次数

如何将来自 openapi-generator 的客户端包含在 gradle java 应用程序中?

我想创建一个从 openAPI 规范文件生成客户端并使用该客户端的 gradle java 应用程序。所以我创建了一个 java 应用程序gradle init(type:application, language:Java, DSL:groovy, test-framework:Junit Jupiter, project-name:simple-java-app, package-structure: a.aa)。

工作原理的小例子:

我可以创建一个second/loc/src/main/java包含包b.bb和类的新源文件夹Foo。并与以下build.gradle

plugins {
    id 'java'
    id 'application'
}

repositories {
    jcenter()
}

sourceSets {
    second {
        java {
            srcDir 'second/loc/src/main/java'
        }
    }
}

compileJava {
    source += sourceSets.second.java
}

dependencies {
    implementation 'com.google.guava:guava:29.0-jre'
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.2'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.6.2'
}

application {
    mainClassName = 'a.aa.App'
}

test {
    useJUnitPlatform()
}
Run Code Online (Sandbox Code Playgroud)

主类可以访问Foo

package a.aa; …
Run Code Online (Sandbox Code Playgroud)

java gradle openapi openapi-generator

5
推荐指数
1
解决办法
1849
查看次数

构建 Android 应用程序时如何从 gradle 生成 OpenAPI 源

我正在努力实现的目标

我正在尝试使用build.gradle脚本中的OpenAPI Generator 为 Android 生成我的 REST API 客户端。这样,每次规格更改时我都不必运行生成器命令行。理想情况下,这将在我构建/组装我的应用程序时生成,并且源代码最终会在java (generated)文件夹中,然后可以从代码访问生成的源代码(例如BuildConfig.java文件会发生这种情况)。

到目前为止我尝试过的

按照他们官方 GitHub 上的这个链接,这是我最终得到的build.gradle文件:

apply plugin: 'com.android.application'
apply plugin: 'org.openapi.generator'

...

openApiValidate {
    inputSpec = "$rootDir/app/src/main/openapi/my-api.yaml"
    recommend = true
}
openApiGenerate {
    generatorName = "java"
    inputSpec = "$rootDir/app/src/main/openapi/my-api.yaml"
    outputDir = "$buildDir/generated/openapi"
    groupId = "$project.group"
    id = "$project.name-openapi"
    version = "$project.version"
    apiPackage = "com.example.mypackage.api"
    invokerPackage = "com.example.mypackage.invoker"
    modelPackage = "com.example.mypackage.model"
    configOptions = [
        java8               : "true",
        dateLibrary         : "java8", …
Run Code Online (Sandbox Code Playgroud)

android gradle openapi openapi-generator

5
推荐指数
2
解决办法
1237
查看次数