标签: swagger-codegen

Swagger-Codegen 插件不生成 @Deprecated 注释

我想在端点上设置一个注释@deprecated,该注释是由 swagger-codegen 插件从 yaml 文件生成的,例如:

 paths:
  '/debug-endpoint/v1/person/{id}':
    get:
      deprecated: true
      summary: get person info
      description: Get
      parameters:
        - name: Id
          in: path
          required: true
          type: string

......
Run Code Online (Sandbox Code Playgroud)

使用 deprecated: true 时,在 swagger Ui 编辑器中显示该端点已被弃用,但在 swagger codegen 生成的代码中,该方法上未设置 @deprecated 注释。

是否可以在 swagger codegen 生成的方法上设置 @Deprecated 注释?

swagger-codegen swagger-codegen-maven-plugin

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

OpenAPI 生成器序列化的 LocalDateTime 错误

我正在使用 OpenAPI Generator 创建客户端,但是当我尝试发出 POST 请求时,LocalDateTime 会被序列化为整数数组,看起来像

{
  "startDate": [ 2019, 11, 13, 0, 0 ],
  "endDate": [ 2020, 12, 31, 0, 0 ]
}
Run Code Online (Sandbox Code Playgroud)

我正在等待这个结果,像 ISO 字符串一样解析

{
  "startDate": "2019-11-13T00:00",
  "endDate": "2020-12-31T00:00"
}
Run Code Online (Sandbox Code Playgroud)

我的gradle配置是这样的:

dependencies {
  compile 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.10.3'
  classpath 'org.openapitools:openapi-generator-gradle-plugin:4.2.3'
}

task generateClientDS(type: org.openapitools.generator.gradle.plugin.tasks.GenerateTask) {
  inputSpec = "$rootDir/specifications/client-ds.yaml".toString()
  outputDir = "$rootDir".toString()
  generatorName = 'java'
  library = 'resttemplate'
  apiPackage = 'com.example.gen.clients.clientds.api'
  modelPackage = 'com.example.gen.clients.clientds.dto'
  modelNameSuffix = 'DTO'
  configOptions = [
          hideGenerationTimestamp: 'true',
          dateLibrary: 'java8'
  ]
  typeMappings = [
          OffsetDateTime: 'java.time.LocalDateTime' …
Run Code Online (Sandbox Code Playgroud)

java gradle-plugin openapi swagger-codegen openapi-generator

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

无法访问 java.util.function.Predicate

我使用 swagger 为 spring 服务器生成代码并尝试使用 intelliJ 运行。但是我收到以下错误消息。任何帮助表示赞赏。

java: cannot access java.util.function.Predicate
  class file for java.util.function.Predicate not found
Run Code Online (Sandbox Code Playgroud)

在线上

.apis(RequestHandlerSelectors.basePackage("io.swagger.api"))
Run Code Online (Sandbox Code Playgroud)

java spring swagger swagger-codegen

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

将 swagger 格式:日期时间转换为 LocalDateTime.class

我有一个无法更改的 swagger.json 规范。我正在使用swagger-codegen从 swagger.json 创建一个库,如下所示:

$ java -jar swagger-codegen-cli.jar generate -i swagger.json -l java -o .
Run Code Online (Sandbox Code Playgroud)

问题是在我的 swagger.json 中,一些格式被声明为date-time并且 codegen 将它们转换为OffsetDateTime类类型...但是我的服务请求的响应以 LocalDateTime 的形式出现,如下所示

{....,
"expirationDeadline": "2022-04-22T10:36:13.383",
....}
Run Code Online (Sandbox Code Playgroud)

因此,当我使用该库并尝试反序列化包含2022-04-22T10:36:13.383我的类的 JSONObject 时,它会失败,因为它无法转换2022-04-22T10:36:13.383OffsetDateTime.

最终,经过一番搜索后,我遵循了类似这样的其他一些线程,并设法将OffsetDateTime类型更改为LocalDateTime使用导入和类型映射,如下所示:

$ java -jar swagger-codegen-cli.jar generate \
-i updated-swagger.json \
-l java \
-o ./java-client-swagger-codegen/ \
--import-mappings org.threeten.bp.OffsetDateTime=org.threeten.bp.LocalDate \
--type-mappings OffsetDateTime=LocalDate
Run Code Online (Sandbox Code Playgroud)

但现在的问题是,swagger-codegen只使用OffsetDateTimeTypeAdaper、和创建 JSON 类DateTypeAdapter,如下所示:LocalDateTypeAdapterSqlDateTypeAdapter

在此输入图像描述

因此,现在每当我尝试反序列化包含 …

json date-formatting swagger swagger-codegen localdatetime

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

ASP.NET Core & Swagger:生成多个输出

我正在使用Swashbuckle.AspNetCore.SwaggerGen版本 v6.1.5 的 ASP.NET Core。

我希望像[HttpGet][HttpGet("user")]in a public这样的路由swagger.json用于公共端点,而包含internal在像这样的路由内部的其他路由[HttpGet("internal/user/{userGuid}")]位于swagger.json端点的内部实例中。

我在启动时配置 SwaggerConfigureServices如下:

services.AddSwaggerGen(gen =>
{
    gen.SwaggerDoc("v1", new OpenApiInfo
    {
        Title = "Server API",
        Version = "1.0",
        Description = "This API features all public available endpoints showing different API features."
    });
    gen.SwaggerDoc("v1-internal", new OpenApiInfo
    {
        Title = "Viewer Server API (internal)",
        Version = "v1-internal",
        Description = "This API features all public available endpoints showing different API features." …
Run Code Online (Sandbox Code Playgroud)

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

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

如何使用摇摇码生成动态假装basePath的URI参数?

我有一个很简单的问题:)

根据伪装文档,它们支持通过api函数传递URI参数来动态更改伪装客户端对象的basePath,如下所示

好例子:

interface MyClient {
    @RequestLine("GET /internal-service")
    String internalService(URI baseUrl);
}
Run Code Online (Sandbox Code Playgroud)

关键是我正在使用swagger,后者从yaml文件生成我的API,并将@Param注释添加到所有函数参数,这对我不利。

不良示例:

interface MyClient {
    @RequestLine("GET {baseUrl}/internal-service")
    String internalService(@Param("baseUrl") String host);
}
Run Code Online (Sandbox Code Playgroud)

有没有办法让摇摇欲坠的生成器生成带有URI参数的API,而无需@Param批注?

预期结果示例:

interface MyClient {
    @RequestLine("POST /internal-service")
    String internalService(URI baseUrl, @Param("someParam") String someParam);
}
Run Code Online (Sandbox Code Playgroud)

swagger swagger-2.0 netflix-feign feign swagger-codegen

4
推荐指数
1
解决办法
1135
查看次数

ASP NET Boilerplate>使用swagger代码生成工具(nswag)生成C#swagger客户端不起作用

我尝试为使用ASP Net Boilerplate创建的API和API生成c#代码,但响应未正确反序列化。

经调查,似乎使用名为“ AjaxResponse”的类包装了json响应。但是,swagger.json在方法响应中不包括此类型。

有谁知道如何构建一个解释打包结果的C#Swagger客户端?

c# asp.net-boilerplate swagger-codegen nswag

4
推荐指数
1
解决办法
528
查看次数

python swagger客户端设置主机和端口

你应该如何在自动生成的 python 客户端库中指定主机和端口swagger-codegen

我找到的唯一文档是here

python swagger swagger-codegen

4
推荐指数
1
解决办法
2330
查看次数

使用 Gradle 配置 Swagger 代码生成器。提供的 Gradle 脚本如何工作?

我在这里与此代码作斗争:https : //github.com/thebignet/swagger-codegen-gradle-plugin-example

尝试使用 Swagger 代码生成器和 Gradle 构建 REST 客户端。我是 Gradle 的新手,看着这个例子很令人困惑,因为有多个变量/属性/名称,我不知道它们来自哪里或它们做什么。特别是这部分:

clean.doFirst {
    delete(swaggerOutputDir)
}

configurations {
    swagger
}

sourceSets {
    swagger {
        compileClasspath = configurations.swaggerCompile
        java {
            srcDir file("${project.buildDir.path}/swagger/src/main/java")
        }
    }
    main {
        compileClasspath += swagger.output
        runtimeClasspath += swagger.output
    }
    test {
        compileClasspath += swagger.output
        runtimeClasspath += swagger.output
    }
}

compileSwaggerJava.dependsOn generateApi
classes.dependsOn swaggerClasses
compileJava.dependsOn compileSwaggerJava
Run Code Online (Sandbox Code Playgroud)

swagger.output - 这是从哪里来的?

类、compileJava、swaggerClasses、compileSwaggerJava 这些都是什么?它们似乎没有在任何地方定义并且似乎是随机命名的?

然后自述文件说:为了生成 Swagger 源代码,请启动以下任务。generateApi : 生成 Swagger 代码

Swagger代码到底是从哪里来的?

任何澄清都非常感谢,我相信会帮助更多的人。

gradle swagger gradle-plugin swagger-codegen

4
推荐指数
1
解决办法
4896
查看次数

如何在 Swagger Codegen 3.x 生成的 Python API 客户端中设置 Bearer 令牌?

我使用https://generator.swagger.io/ 上的在线 Swagger Codegen为这个 API生成了一个 Python 客户端库。API 使用 Bearer 身份验证:

openapi: 3.0.0
...

paths:
  /sandbox/register:
    post:
      ...
      security:
        - sso_auth: []
      ...

components:
  securitySchemes:
    sso_auth:
      type: http
      scheme: bearer
Run Code Online (Sandbox Code Playgroud)

但是,Configuration生成的 Python 客户端中的类没有access_token字段。

使用生成的客户端库时如何填写不记名访问令牌?


代码生成端点POST /gen/clients/{language}具有authorizationValuesecurityDefinition参数 - 我是否需要以某种方式配置这些参数?

"authorizationValue": {
  "value": "string",
  "type": "string",
  "keyName": "string"
},
"securityDefinition": {
  "type": "string",
  "description": "string"
}
Run Code Online (Sandbox Code Playgroud)

python swagger bearer-token swagger-codegen

4
推荐指数
1
解决办法
3569
查看次数