标签: swagger-codegen

Swagger Codegen CLI Java客户端 - 如何正确使用它

我正在玩我的jersey2休息服务.为了更好地概述给定的服务(描述,类型等),我大量使用了swagger(swagger-jersey2-jaxrs).所以我能够创建我的服务描述(swagger.json),我可以通过swagger ui来查看和探索它们.

现在,我需要创建一些客户端来使用这些服务.我来了accrooss swagger codegen cli这是一个很好的工具来生成你的客户端和许多不同的语言(在我的情况下为java).我能够生成api客户端和正在使用的模型.

在这里,我遇到了第一个问题.REST服务和swagger描述是http基本身份验证保护.我阅读了文档 ,它给了我一些暗示,有可能使用基本的auth.在这一点上,我不得不提到,从我的观点来看,doucmentation非常差.它说:

-a, - auth在远程获取swagger定义时添加授权标头.传入URL编码的name:header字符串,并用逗号分隔多个值.

我首先要做的是传递一个字符串,就像在http标题中,但这不起作用甚至谷歌搜索如何使用基本的auth与swagger cli没有导致一些明确的答案.经过大量的尝试和错误后我(我使用CLI 2.1.2)我最终得到了正确的格式,例如:

java -jar swagger-codegen-cli-2.1.2.jar generate -a"授权:基本YWRtaW46YWRtaW4 =" - i http:// localhost:8080/webproject/restapi/swagger.json -l java -o restclient

其中YWRtaW46YWRtaW4 =是我的情况下admin:admin的base64编码值.

到现在为止还挺好.生成的Java客户端也必须使用基本身份验证.我看了一下ApiClient中的方法,发现了setUsername和setPassword.我认为这种方法使客户端能够使用基本身份验证,但没有运气.

所以我深入研究了生成的类,特别是ApiClient和几个生成的ApiService类.我发现setUsername和setPassword没有效果,原因如下:

/**
   * Helper method to set username for the first HTTP basic authentication.
   */
  public void setUsername(String username) {
    for (Authentication auth : authentications.values()) {
      if (auth instanceof HttpBasicAuth) {
        ((HttpBasicAuth) auth).setUsername(username);
        return;
      }
    }
    throw new RuntimeException("No HTTP basic authentication configured!");
  }
Run Code Online (Sandbox Code Playgroud)

同时HashMap定义如下:

// Setup authentications …
Run Code Online (Sandbox Code Playgroud)

java rest swagger swagger-2.0 swagger-codegen

14
推荐指数
1
解决办法
5332
查看次数

Swagger C# 枚举生成 - 底层 int 值与原始枚举不匹配

我在服务器上创建了一个枚举,其中手动设置了整数值,而不是从 0 开始默认增量

public enum UserType
{
    Anonymous = 0,
    Customer = 10,
    Technician = 21,
    Manager = 25,
    Primary = 30
}
Run Code Online (Sandbox Code Playgroud)

我的服务器正在使用 AspNetCore.App 2.2.0 运行。它在 Startup.cs 中使用 swashbuckle aspnetcore 4.0.1 进行配置,以在每次服务器启动时生成一个 swagger json 文件来描述 api。

然后,我使用 NSwag Studio for windows v 13.2.3.0 生成带有该 swagger JSON 文件的 C Sharp api 客户端,以在 Xamarin 应用程序中使用。生成的 c Sharp api 客户端中生成的枚举如下所示 - 底层整数值与原始枚举不匹配。

[System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.1.5.0 (Newtonsoft.Json v11.0.0.0)")]
public enum UserType
{
    [System.Runtime.Serialization.EnumMember(Value = @"Anonymous")]
    Anonymous = 0,

    [System.Runtime.Serialization.EnumMember(Value = @"Customer")]
    Customer = 1, …
Run Code Online (Sandbox Code Playgroud)

c# swagger asp.net-core swagger-codegen nswagstudio

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

用于OpenAPI 3.0的Swagger Codegen(带有maven插件)

我想使用Swagger Codegen for OpenAPI 3.0 YAML文件.我看到Swagger Codegen 3.0.0-rc0可用.但是当我尝试使用它时,我遇到了问题.以下是详细信息:

我的pom.xmlswagger-codegen插件文件:

<plugin>
  <groupId>io.swagger</groupId>
  <artifactId>swagger-codegen-maven-plugin</artifactId>
  <version>3.0.0-rc0</version>
  <executions>
    <execution>
      <goals>
        <goal>generate</goal>
      </goals>
      <configuration>
        <inputSpec>${basedir}/src/main/resources/mySpec.yaml</inputSpec>
        <output>target/generated-sources</output>
        <language>spring</language>
        <generateApis>false</generateApis>
        <modelPackage>com.kj.model</modelPackage>
        <apiPackage>com.kj</apiPackage>
        <configOptions>
          <sourceFolder>swagger</sourceFolder>
          <library>spring-mvc</library>
          <interfaceOnly>true</interfaceOnly>
          <useBeanValidation>true</useBeanValidation>
          <dateLibrary>java8</dateLibrary>
          <java8>true</java8>
        </configOptions>
      </configuration>
    </execution>
  </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

使用上面的插件,当我运行maven构建时,我得到了这个ServiceConfigurationError,这里是堆栈跟踪:

Exception in thread "main" java.util.ServiceConfigurationError: io.swagger.codegen.CodegenConfig: Provider io.swagger.codegen.languages.java.JavaClientCodegen not found
    at java.util.ServiceLoader.fail(ServiceLoader.java:239)
    at java.util.ServiceLoader.access$300(ServiceLoader.java:185)
    at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:372)
    at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
    at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
    at io.swagger.codegen.CodegenConfigLoader.forName(CodegenConfigLoader.java:19)
    at io.swagger.codegen.config.CodegenConfigurator.toClientOptInput(CodegenConfigurator.java:392)
    at io.swagger.codegen.plugin.CodeGenMojo.execute(CodeGenMojo.java:512)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
Run Code Online (Sandbox Code Playgroud)

为了解决这个问题,我 pom文件的maven插件部分添加了swagger-codegen-generators依赖项:

<dependencies> …
Run Code Online (Sandbox Code Playgroud)

maven swagger openapi swagger-codegen openapi-generator

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

编译时OK,在使用webpack的typescript中使用来自命名空间的类时出现运行时错误

我用招摇,代码生成-l typescript-angular选项生成的REST消费服务的库.生成的代码看起来像this(DefaultApi.ts):

namespace API.Client {
    'use strict';

    export class DefaultApi {
        protected basePath = 'http://localhost:7331/v1';
        public defaultHeaders : any = {};

        static $inject: string[] = ['$http', '$httpParamSerializer', 'basePath'];

        constructor(protected $http: ng.IHttpService, protected $httpParamSerializer?: (d: any) => any, basePath?: string) {
            if (basePath !== undefined) {
                this.basePath = basePath;
            }
        }

        private extendObj<T1,T2>(objA: T1, objB: T2) {
            for(let key in objB){
                if(objB.hasOwnProperty(key)){
                    objA[key] = objB[key];
                }
            }
            return <T1&T2>objA;
        }

        /**
         * Delete a person. …
Run Code Online (Sandbox Code Playgroud)

typescript webpack swagger-codegen

11
推荐指数
1
解决办法
609
查看次数

如何为OpenAPI 3.0.0运行swagger-codegen

貌似官方规范V3支持接近释放https://blog.readme.io/an-example-filled-guide-to-swagger-3-2/和招摇,代码生成了3.0.0支持开发并在分支上传递一定程度的测试https://github.com/swagger-api/swagger-codegen3.0.0

我有一个swagger规范(从我现有的2.0规范通过https://github.com/mermade/swagger2openapi生成,输出看起来不错)

是否有一种简单的方法来运行swagger-codegen而无需自己打包jar?

[main] INFO io.swagger.parser.Swagger20Parser - 从/input/myspec.openapi3.json读取[main] INFO io.swagger.codegen.ignore.CodegenIgnoreProcessor - 找不到.swagger-codegen-ignore文件.线程"main"中的异常java.lang.RuntimeException:缺少swagger输入或配置!at io.swagger.codegen.DefaultGenerator.generate(DefaultGenerator.java:685)at io.swagger.codegen.cmd.Generate.run(Generate.java:285)at io.swagger.codegen.SwaggerCodegen.main(SwaggerCodegen.java) :35)

看起来swagger-codegen repo 你构建之后运行一个docker容器有一些支持的方式; 我只是希望/猜测有一种支持的方法来做到这一点,而不需要在本地编译,因为我需要在几个地方设置它.

swagger openapi swagger-codegen

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

Swagger-Codegen:如何将所有文件合并到一个文件中以进行客户端代码生成

我刚刚开始使用Swagger和NodeJS.我能够将Swagger实现到我的NodeExpress应用程序,并且能够准确地生成带有Swagger-Codegen(Typescript-Angular)的typescript-client-code.

我遇到的一个问题是生成的代码分散了很多不同的文件.我希望它只输出一个文件api.ts,它包含API调用和接口/模型的所有内容.

我一直在寻找解决这个问题的方法,因为随着后端的增长,很难读取和维护生成的客户端代码.

任何建议或指示将不胜感激.

节日快乐!谢谢

编辑:我一直在寻找这个问题的答案,但仍然没有找到答案.我目前正在开发一个使用ASP.NET Core的项目,他们可以NSwag实现我想要实现的目标Node Swagger.

javascript express swagger swagger-codegen angular

10
推荐指数
1
解决办法
1669
查看次数

从Swagger生成静态Javascript客户端以在React Native中使用

我正在构建一个React Native应用,它将使用Swagger 2.0定义的API。我去了https://github.com/swagger-api/swagger-codegen#where-is-javascript的 Swagger仓库,它指向了https://github.com/swagger-api/swagger-js的Javascript生成器。

问题在于生成器是动态的,并且由于我将客户端嵌入到移动应用程序中,因此动态生成器不是一种选择。他们还说,https://github.com/wcandillon/swagger-js-codegen上有一个第三方项目,该项目不再维护,并指向https://github.com/swagger-。 api / swagger-codegen。(虽然该第三方生成器正常工作,但我不希望使用可能随时中断的弃用工具,因为当新端点到达时我将更新API客户端。而且该工具也不会生成任何真正好的代码,因为它在自己的仓库中说)。

在这一点上,我被困住了。从Swagger定义生成静态Javascript客户端以在React Native中使用的受支持方式是什么?

javascript swagger swagger-2.0 react-native swagger-codegen

10
推荐指数
1
解决办法
1419
查看次数

如何从 OpenAPI/Swagger 模型定义生成 JSON 示例?

我正在为具有 OpenAPI (Swagger) 定义的 REST API 构建模糊器。

我想测试 OpenAPI 定义中的所有可用路径,生成数据以测试服务器,分析响应代码和内容,并验证响应是否符合 API 定义。

我正在寻找一种从模型定义生成数据(JSON 对象)的方法。

例如,给定这个模型:

...
"Pet": {
  "type": "object",
  "required": [
    "name",
    "photoUrls"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "format": "int64"
    },
    "category": {
      "$ref": "#/definitions/Category"
    },
    "name": {
      "type": "string",
      "example": "doggie"
    },
    "photoUrls": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "tags": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/Tag"
      }
    },
    "status": {
      "type": "string",
      "description": "pet status in the store"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我想生成随机数据并得到如下内容: …

json swagger swagger-2.0 openapi swagger-codegen

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

如何在swagger codegen中生成构造函数?

codegen没有生成任何构造函数.我提到了petstore swagger文件,使用了最新的swagger codegen jar文件.

但是只生成了默认构造函数.

它不是基于其字段生成构造函数.

如何启用它?

java swagger-codegen

9
推荐指数
1
解决办法
2753
查看次数

如何在OpenAPI(Swagger)中记录动态查询参数名称?

有没有办法记录以下查询?

GET api/v1/users?name1=value1&name2=value
Run Code Online (Sandbox Code Playgroud)

其中查询参数名称是动态的,将从客户端接收.

我正在使用最新的Swagger API.

swagger swagger-editor openapi swagger-codegen

9
推荐指数
1
解决办法
3049
查看次数