标签: swagger-codegen

如何使用 Swagger Codegen TypeScript Fetch Client

有没有人成功地使用 Swagger 代码生成器创建了一个可以在浏览器中使用的 TypeScript Fetch 客户端?我正在尝试在使用 TypeScript 的 React 应用程序中使用生成的 API 客户端。

虽然我已经成功生成了一个客户端(即 api.ts 文件),但我对它以以下导入开头的事实感到困惑:

import * as querystring from "querystring";
import * as url from "url";

import * as isomorphicFetch from "isomorphic-fetch";
import * as assign from "core-js/library/fn/object/assign";

interface Dictionary<T> { [index: string]: T; }
export interface FetchAPI { (url: string, init?: any): Promise<any>; }

...
Run Code Online (Sandbox Code Playgroud)

虽然我可以成功找到 isomorphic-fetch 和 core-js 的 TypeScript 类型(即 @types),但我找不到查询字符串和 url 的类型。结果,我得到[ts] Cannot find module...querystringurl还有assign进口。

这个客户端实际上不是打算在浏览器中使用吗?否则,任何人都可以为我在这里可能做错的事情提供任何建议吗?

在此先感谢您的帮助!

npm swagger typescript openapi swagger-codegen

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

swagger-codegen 客户端:如何在模型上包含 jackson 注释

我正在使用 swagger-codegen 生成一个 rest 客户端,但是我遇到了一个问题,我使用的服务返回一个带有继承的模型,API 模型如下所示:

public class Person
{
    private List<Book> books;
    ...
}

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "typeClass")
@JsonSubTypes({ @JsonSubTypes.Type(value = Magazine.class) })
public class Book 
{
    //some prop
}

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "typeClass")
public class Magazine extends Book
{
    //some prop
}
Run Code Online (Sandbox Code Playgroud)

API 模型使用 jackson 注解进行注解以处理继承。API 工作正常。当我生成客户端时,客户端模型没有jackson注解,所以当我使用生成的客户端消费API时,它总是使用Book类进行反序列化。它不会“看到” Magazine 类。我认为这是因为生成的模型没有处理继承的 jackson 注释。

如何配置 swagger-codegen 以将 jackson 注释添加到模型中。

非常感谢...

java rest jackson swagger-codegen

7
推荐指数
2
解决办法
7102
查看次数

自定义生成的模型名称-Swagger UI

我正在尝试调整自动生成的Swagger定义中使用的模型的“ displayName”。

这只会影响Swagger名称,这意味着代码中的名称空间将保持不变,而从Swagger UI查看模型时,您会看到一个自定义名称。

当前,从代码返回的模型名称是一个命名空间,如下所示:b.c.d.e.f,我想在代码中添加一个属性,并“屏蔽” Swagger文档的名称,以便在生成文档/ Swagger定义时它将显示为CustomSwaggerName

我有一些API(C#)使用的工具包括Swashbuckle(preferred)和SwaggerGen,但是现在,如果可能的话,我想使它在其中任何一种下工作。

我尝试使用看起来正确的属性:

[ResponseType(typeof(Company)),DisplayName("NewCompany")]
[SwaggerResponse(200,"NewCompany",typeof(object))]
Run Code Online (Sandbox Code Playgroud)

没有运气。我还浏览了SwashBuckle git存储库,希望找到一些东西。

图像应有助于进一步解释我正在尝试实现的目标。 在此处输入图片说明

我知道这似乎是一个奇怪的用例,但这是针对为我们的AWS API Gateway自动化编写的工具,该工具将使用Swagger定义进行一些比较。

c# swagger swagger-ui swashbuckle swagger-codegen

7
推荐指数
2
解决办法
3623
查看次数

如何从 OpenAPI 3.0 架构生成 ASP.NET Core 2 控制器?

我有一个 OpenAPI 3.0 架构 YAML 文档,它定义了一些带有所有必需参数和响应的 API 端点。

现在,我想生成一些样板服务器端代码:控制器及其方法。我的 API 将使用 ASP.NET Core 2 编写。那么,是否可以使用某种生成器,还是应该手动执行?

PS我知道我可以生成客户端代码,但我现在不需要它......

code-generation asp.net-core openapi swagger-codegen asp.net-core-2.0

7
推荐指数
1
解决办法
4452
查看次数

如何在从swagger生成java代码时将“double”字段视为“BigDecimal”?

我正在从招摇中生成 pojo。swagger 是由第三方提供的,无法更改。我希望将“double”字段生成为“BigDecimal”。如何自定义我的代码生成器以实现这一目标?

        <plugin>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-codegen-maven-plugin</artifactId>
            <executions>
                <execution>
                    <id>generateSquiree</id>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                    <configuration>
                        <inputSpec>${project.basedir}/src/main/schema/sample.swagger.json</inputSpec>
                        <configOptions>
                            <modelPackage>${basepackage}.model</modelPackage>
                            <apiPackage>${basepackage}.api</apiPackage>
                        </configOptions>
                    </configuration>
                </execution>
            </executions>
            <configuration>
                <language>spring</language>
                <configOptions>
                    <serializableModel>true</serializableModel>
                    <java8>false</java8>
                    <javaVersion>${java.version}</javaVersion>
                    <jdk8>true</jdk8>
                    <dateLibrary>joda</dateLibrary>
                    <useTags>true</useTags>
                    <sourceFolder>src/main/java</sourceFolder>
                    <interfaceOnly>true</interfaceOnly>
                </configOptions>
            </configuration>
        </plugin>
Run Code Online (Sandbox Code Playgroud)

以下是需要生成为“BigDecimal”的招摇的片段

    "Quantity": {
      "description": "Represent a quantity",
      "required": [
        "Amount"
      ],
      "type": "object",
      "properties": {
        "Amount": {
          "format": "double",
          "description": "Amount",
          "type": "number"
        }
      }
    },
Run Code Online (Sandbox Code Playgroud)

java rest swagger swagger-codegen

7
推荐指数
1
解决办法
4567
查看次数

如何在 swagger codegen 中注入自定义 spring 验证?

我们能够使用 openApi 文档并使用 spring swagger-codegen 生成 Java 输入类。此外,我们可以在为常见约束(如长度、强制等)生成输入时注入 javax.validation 注释。

我希望将其提升到下一个自定义级别,并能够使用与 Spring 的 @Constraint 注释连接的自定义验证注释来注释生成的输入类。这样我们就可以为我们的项目重用特定的验证。

我希望有一个开箱即用的解决方案。您使用自定义验证注释生成输入类的首选方法是什么?

java spring-validator swagger-2.0 swagger-codegen swagger-codegen-maven-plugin

7
推荐指数
1
解决办法
9046
查看次数

如何使用多个 yaml 文件生成 openAPI 代码

我有两个 yaml 文件,customer.yaml 和 employee.yaml。如何在单个项目中从这两个 yaml 文件生成 java 代码。我正在使用 gradle,我知道单个 yaml 的任务规范,但是如何指定多个 yaml。我应该在单个 openApiGenerator 下指定多个 inputSpec 吗?如果是,那么这样做的确切语法是什么。下面是我在 build.gradle 文件中的 openApiGenerator 任务。

``
openApiGenerate {
    generatorName = "spring"
    apiPackage = "com.xxx.generated.controller"
    modelPackage = "com.xxx.generated.model"
    inputSpec = "$rootDir//schema/employee.yaml".toString()
    outputDir = "$rootDir/generated".toString()
    configOptions = [
        dateLibrary: "java8"
    ]
    systemProperties = [
        invoker : "false", 
        generateSupportingFiles: "true"
    ]
    additionalProperties = [
        interfaceOnly : "true",
    ]
}
 ``
Run Code Online (Sandbox Code Playgroud)

我听说过 openApiGenerators 任务,它列出了通过 Open API Generators 可用的生成器,但找不到使用它的方法。

java gradle openapi swagger-codegen openapi-generator

7
推荐指数
2
解决办法
6900
查看次数

如何在 Gradle for OpenAPI 3.0 中使用 Swagger Codegen?

我有一个 OpenAPI 3.0 规范(采用 YAML 格式),并且想为 API 生成 Java 代码。我想将此作为自动化构建的一部分(最好使用 Gradle),以便我可以创建服务接口,并将接口的实现作为自动化过程的一部分。

这个工作示例展示了如何做到这一点,但它使用 Swagger 2.0 规范 YAML:https : //github.com/galovics/swagger-codegen-gradle/tree/first-server-side

我已经分叉了这个例子并添加了一个 OpenAPI 3.0 规范,但是它无法构建:https : //github.com/robjwilkins/swagger-codegen-gradle/tree/openapi_v3_test

错误是:

无法读取资源列表 com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'openapi': was expected (JSON String, Number, Array, Object or token 'null', 'true' or 'false') at [来源: (字符串)"openapi: 3.0.0

(公关显示变化:https : //github.com/robjwilkins/swagger-codegen-gradle/pull/1/files

我的理解是需要更新的代码在build.gradle

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("io.swagger.codegen.v3:swagger-codegen:3.0.16")
    }
}
Run Code Online (Sandbox Code Playgroud)

可能io.swagger.codegen.v3:swagger-codegen:3.0.16无法识别 OpenAPI 3.0?

Swagger Core v3 项目似乎专注于从代码(而不是来自规范的代码)生成 YAML/JSON 规范:https …

java gradle swagger openapi swagger-codegen

7
推荐指数
1
解决办法
9457
查看次数

Swagger Codegen basePath 被忽略

我正在尝试使用Swagger Codegen » 2.2.1生成一些 Web 服务定义

所有配置都在工作,并且我的.yaml定义正确生成了类。

为什么该属性basePath被忽略?


@RestController只使用paths定义生成:

https://springboot-base-save-return.appdes.xnet/saveBackendReturn
Run Code Online (Sandbox Code Playgroud)

预期(使用basePathpaths定义):

https://springboot-base-save-return.appdes.xnet/v1/saveBackendReturn
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我忘记了什么吗?


我的.yaml合同:

swagger: '2.0'
info:
  description: My Project
  version: 1.0.0
  title: Save Backend Return
host: springboot-base-save-return.appdes.xnet
basePath: /v1
tags:
  - name: saveBackendReturn
    description: Save Backend Return
schemes:
  - https
paths:
  /saveBackendReturn:
    post:
      tags:
        - saveBackendReturn
      summary: Save Backend Return
      description: My Project
      operationId: saveBackendReturn
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - …
Run Code Online (Sandbox Code Playgroud)

spring yaml contract-first swagger swagger-codegen

7
推荐指数
1
解决办法
2831
查看次数

如何在 Maven 中将多个 OpenAPI 3.0 规范文件合并为一个?

在使用 Spring Boot 的 Maven 项目中,有多个 OpenAPI 3.0 规范文件。一个规范定义了所有 HTTP 错误 (errors.yml),并且 error.yml 的组件在其他规范中引用。我想生成一个输出规范,其中包含 error.yml 的所有组件。

输入规格:

  schema:
    $ref: "errors.yml#/components/schemas/Error"
Run Code Online (Sandbox Code Playgroud)

期望的输出规格:

schema:
  $ref: "#/components/schemas/Error"
  ...
Error:
  ...
Run Code Online (Sandbox Code Playgroud)

我可以使用 swagger-codegen-cli 来做到这一点:

java -Dfile.encoding=UTF-8 -jar swagger-codegen-cli-3.0.33.jar generate -l openapi-yaml -i search-api-contract/target/expert_api.yml -o . -DoutputFile=search-api-contract/target/expert_api.yml
Run Code Online (Sandbox Code Playgroud)

如何使用 Maven pom.xml 生成一份规范?

maven openapi swagger-codegen swagger-codegen-maven-plugin

7
推荐指数
1
解决办法
8504
查看次数