标签: swagger-codegen

将 swagger-codegen 与多个 swagger 文件一起使用

我们的项目为单个 API 使用多个 swagger 文件,但看起来 swagger-codegen 只接受一个。在这种情况下,我们如何使用 swagger-codegen 生成代码?

swagger swagger-codegen

6
推荐指数
1
解决办法
6758
查看次数

为什么 Angular 5 中的错误是:没有导出成员“OpaqueToken”。?

我有一个 Angular 4 应用程序,我正在将其升级到 Angular 5。

我收到以下错误。

src/app/application/services/generated/variables.ts(1,10) 中的错误:错误 TS2305:模块 '"..../node_modules/@angular/core/core"' 没有导出成员 'OpaqueToken'。

代码片段是:

import { OpaqueToken } from '@angular/core';

export const BASE_PATH = new OpaqueToken('basePath');
export const COLLECTION_FORMATS = {
    'csv': ',',
    'tsv': '   ',
    'ssv': ' ',
    'pipes': '|'
}
Run Code Online (Sandbox Code Playgroud)

此代码由swagger editor生成。

swagger-2.0 swagger-codegen angular angular5

6
推荐指数
1
解决办法
2万
查看次数

如何在.net核心中使用Swagger Codegen

我可以使用Swashbuckle在我的web api中集成Swagge UI.我也想探索swagger codegen功能.有人可以帮忙 - 我如何将swagger codegen集成到我的web api项目中?或者我需要下载任何工具吗?我希望它能够托管codegen并传递json/raml表单规范以在.net核心中生成客户端.

我无法在上面找到足够的文档.

编辑:我想知道如何在WEBAPI中托管codegen.

谢谢!

c# .net-core swagger-codegen

6
推荐指数
1
解决办法
3146
查看次数

Swagger 代码生成失败:缺少 swagger 输入或配置

我有这个 json 文件,我一直在尝试通过 swagger codegen 创建模型和 API 代码。这并不是很有效,因为它会引发错误。

Exception in thread "main" java.lang.RuntimeException: missing swagger input or config!
    at io.swagger.codegen.DefaultGenerator.generate(DefaultGenerator.java:735)
    at io.swagger.codegen.cmd.Generate.run(Generate.java:285)
    at io.swagger.codegen.SwaggerCodegen.main(SwaggerCodegen.java:35)
Run Code Online (Sandbox Code Playgroud)

swagger 文档版本是 1.2。我正在使用 swagger-codegen 2.4.0 版。

java -jar modules\swagger-codegen-cli\target\swagger-codegen-cli.jar generate -i ./json/docs.json -l python -o C:/Users/sk/projects/generated-sdk
Run Code Online (Sandbox Code Playgroud)

python swagger-codegen

6
推荐指数
1
解决办法
1981
查看次数

Swagger-codegen生成的模型反序列化问题 - 无法识别的字段"@id"

我正在尝试使用swagger-codegen生成的代码来使用我的REST服务,这是在我的swagger.json中定义的(由服务器端由springfox 2.9.0提供)

我正在生成api,模型和支持文件.
但每次我尝试使用GET api时,都会发生错误:

avax.ws.rs.client.ResponseProcessingException: Problem with reading the data, class xxx.xxx.generatedmodels.MyEntity, ContentType: application/json;charset=UTF-8.
....
Caused by: org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "@id" (Class xxx.xxx.generatedmodels.MyEntity), not marked as ignorable

我的猜测是生成的Model类需要类注释@JsonIdentityInfo(generator = JSOGGenerator.class),就像它们在服务器端模型上一样.(也许也许@JsonIgnoreProperties(ignoreUnknown = true)?)
这个假设是否正确?

如果是,那么有没有办法配置swagger-codegen在每个模型上添加这个注释?

如果不是,我该怎么办才能让ApiClient反序列化收到的实体?

我的swagger-codegen配置如下所示:

<plugin>
    <groupId>io.swagger</groupId>
    <artifactId>swagger-codegen-maven-plugin</artifactId>
    <version>2.3.1</version>
    <executions>
        <execution>
            <goals>
                <goal>generate</goal>
            </goals>
            <configuration>
                <inputSpec>https://example.com/v2/api-docs</inputSpec>
                <language>java</language>
                <generateApis>true</generateApis>
                <generateModels>true</generateModels>
                <generateSupportingFiles>true</generateSupportingFiles>
                <generateModelDocumentation>false</generateModelDocumentation>
                <generateModelTests>false</generateModelTests>
                <modelPackage>xxx.xxx.generatedmodels</modelPackage>
                <apiPackage>xxx.xxx.generatedapi</apiPackage>
                <invokerPackage>xxx.xxx.generatedinvoker</invokerPackage>
                <configOptions>
                    <dateLibrary>java8</dateLibrary>
                    <sourceFolder>src/main/java</sourceFolder>
                    <java8>true</java8>
                </configOptions>
                <library>jersey2</library>
                <output>../generated-client</output>
                <groupId>xxx.xxx</groupId>
                <artifactId>generatedapiclient</artifactId>
                <artifactVersion>1.0.0</artifactVersion>
            </configuration>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

响应看起来像这样(严重缩短.有许多对象属性也有"@id".这个例子匹配swagger.json进一步向下): …

java deserialization swagger jsog swagger-codegen

6
推荐指数
0
解决办法
857
查看次数

OpenAPI / Swagger 3.0:默认鉴别器值

您如何为每个子类设置默认鉴别器?

例如,采用以下模式:

components:
  schemas:
    Pet:
      type: object
      required:
      - petType
      properties:
        petType:
          type: string
      discriminator:
        propertyName: petType
    Cat:
      allOf:
      - $ref: '#/components/schemas/Pet'
      - type: object
        # all other properties specific to a `Cat`
        properties:
          name:
            type: string
    Dog:
      allOf:
      - $ref: '#/components/schemas/Pet'
      - type: object
        # all other properties specific to a `Dog`
        properties:
          bark:
            type: string
Run Code Online (Sandbox Code Playgroud)

上述模式的代码生成器将创建一个客户端,其中的petType值必须由程序员显式设置。为什么不能默认设置Cat对象?petTypeCat

我尝试使用defaultvalue 让它工作。但是,生成的代码包含隐藏的属性(子级和父级上的相同属性)。

components:
  schemas:
    Pet:
      type: object
      required:
      - petType
      properties:
        petType:
          type: string …
Run Code Online (Sandbox Code Playgroud)

polymorphism swagger openapi swagger-codegen openapi-generator

6
推荐指数
1
解决办法
572
查看次数

未将空数组选为 Open API AKA Swagger 生成代码中定义模型的默认值

在设计 API 时,我定义了一个UserGeo包含两个字段的模型 - domain(字符串数组) 和country(字符串数组)。

[]如果没有为 提供值,则应在请求正文中使用空列表domain。但是在将default属性定义为[]生成Spring代码时,不会分配空 ArrayList<> 又名[]

附上代码示例:

招摇定义:

definitions:
  UserGeo:
    type: "object"
    properties:
      country:
        type: "array"
        items:
          type: "string"
      domain:
        type: "array"
        items:
          type: "string"
        default: []
Run Code Online (Sandbox Code Playgroud)

这不会将域值默认为空列表,请检查生成的 Spring/Java 代码:

.
.
public class Classification   {
  @JsonProperty("country")
  @Valid
  private List<String> country = null;

  @JsonProperty("domain")
  @Valid
  private List<String> domain = null;
.
.
Run Code Online (Sandbox Code Playgroud)

然而,当我将域字段定义为required甚至没有使用默认值定义它时,生成的代码会分配一​​个空列表作为domain.

definitions:
  UserGeo:
    type: …
Run Code Online (Sandbox Code Playgroud)

api swagger openapi swagger-codegen openapi-generator

6
推荐指数
1
解决办法
5570
查看次数

包 io.swagger.v3.oas.annotations.media 不存在 (Swagger Codegen)

我在 gradle 中使用 swagger codegen cli 工具(版本 3.0.25)生成一个 java 客户端:

task doCodeGenSdk(type: JavaExec) {
main = "io.swagger.codegen.v3.Codegen"
classpath = configurations.codeGenCli
inputs.files file("${swaggerSpecDir}/*.json")
outputs.dir file("${codeGenDirSdk}")
args = ["generate", "--lang", "java", "--input-spec", "${swaggerSpecFile}",
        "--config", "${swaggerConfig}",
        "--template-dir", "${swaggerTemplateDir}",
        "--output", "${codeGenDirSdk}"]
systemProperty "apiTests", "false"
systemProperty "apiDocs", "false"
systemProperty "modelTests", "false"
systemProperty "modelDocs", "false"}
Run Code Online (Sandbox Code Playgroud)

swagger配置文件如下所示:

{
"library": "resttemplate",
"artifactVersion": "__VERSION__",
"artifactId": "__ARTIFACT_ID__",
"modelPackage": "com.model",
"apiPackage": "com.api",
"invokerPackage": "com.invoker",
"dateLibrary": "java8",
"apiTests": false,
"java8": true,
"serializableModel": true,
"useBeanValidation": true,
"performBeanValidation": true}
Run Code Online (Sandbox Code Playgroud)

模板目录具有以下胡子文件:

ApiClient.mustache, generatedAnnotation.mustache, licenseInfo.mustach, pojo.mustache …
Run Code Online (Sandbox Code Playgroud)

java gradle swagger swagger-codegen

6
推荐指数
1
解决办法
2万
查看次数

如何使用 springdoc 将多个 Open Api Spec 合并为一个

我有一个带有 Spring Cloud Gateway 的微服务架构,每个微服务都有自己的 Open Api Spec。我需要将它们全部合并到 1 个开放 Api 规范( yaml 或 json )中。我不是在谈论服务多个链接的单个 swagger UI。我确实需要合并规范,因为规范的使用者需要一个 json 文件。此文件由 Atlassian 的 Open Api Validator 使用。

swagger openapi swagger-codegen springdoc

6
推荐指数
0
解决办法
791
查看次数

有没有办法使用 swagger-codegen 使用 Jakarta 而不是 Javax 生成源代码

我需要使用带有 Jakarta 包的 swagger codegen gradle 插件生成 spring 控制器源代码,但我在配置中看不到这样做的选项

我尝试使用以下选项来生成招摇代码:

additionalProperties = [
                "errorOnUnknownEnum": true,
                "dateLibrary": "java8",
                "hideGenerationTimestamp": true,
                "modelPackage": "com.delphix.api.gw.model${version}",
                "apiPackage": "com.delphix.api.gw.api${version}",
                "interfaceOnly": true,
                "packageName": "api",
                "useTags": true,
                "useJakartaEe" : true,
                "useSpringBoot3" : true,
                "generateSupportingFiles" : false,
                "java11" : true,
        ]
Run Code Online (Sandbox Code Playgroud)

spring-boot swagger-codegen jakarta-migration

6
推荐指数
1
解决办法
5155
查看次数