标签: swagger-codegen

更新到 Swashbuckle.AspNetCore 3.0 不再按标签分组

我曾经[SwaggerOperation(Tags = new[] { "GroupA" })]在 Swagger UI 的控制器中对我的操作进行分组。

更新到 3.0 后,不再考虑这一点,仅按控制器名称分组。

属性中“更改”的标签名称也不再生成到 Swagger JSON/YAML 中,只有控制器名称作为标签。

我无法在发行说明中找到有关此行为的重大更改的提示。

任何关于行为改变和/或我如何恢复它的见解将不胜感激。

swagger swagger-ui swashbuckle swagger-codegen

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

Swagger codegen 生成重复的变量

我正在尝试从包含以下内容的 yaml 生成客户端

  acceptParam:
    name: Accept
    type: string
    required: true
    in: header
    description: Accepted Content-type. Should be set to application/json
  contentTypeParam:
    name: Content-Type
    type: string
    required: true
    in: header
    description: Request Content-type. Should be set to application/json
Run Code Online (Sandbox Code Playgroud)

这意味着acceptcontentType将出现在生成的方法签名中。

最重要的是,我配置了这样的插件

<plugin>
    <groupId>io.swagger.codegen.v3</groupId>
    <artifactId>swagger-codegen-maven-plugin</artifactId>
    <version>3.0.18</version>
    <executions>
        <execution>
            <goals>
                <goal>generate</goal>
            </goals>
            <phase>generate-sources</phase>
            <configuration>
                <inputSpec>${project.basedir}/src/main/resources/swagger.yaml</inputSpec>
                <language>java</language>
                <configOptions>
                    <dateLibrary>joda</dateLibrary>
                    <localVarPrefix>localVar</localVarPrefix>
                </configOptions>
                <library>resttemplate</library>
                <output>${project.build.directory}/generated-sources</output>
                <modelPackage>com.example.client.model</modelPackage>
                <apiPackage>com.example.client.api</apiPackage>
                <generateApiTests>false</generateApiTests>
                <generateModelTests>false</generateModelTests>
            </configuration>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

尽管如此,之后mvn clean install

我越来越

错误:(130,31)java:变量accept已在方法中定义

生成的代码包含

public Response authorize(Request …
Run Code Online (Sandbox Code Playgroud)

java yaml http swagger swagger-codegen

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

从 Swagger-codegen 生成 DART 包

编辑:我现在收到新错误:我正在使用 SWAGGER 2.0

命令 : java -jar path/swagger-codegen-cli.jar generate -i http://petstore.swagger.io/v2/swagger.json -l dart -i dart -o /Users/path/folder/ToStoreClient

错误 :

 [main] INFO io.swagger.parser.Swagger20Parser - reading from dart
    [main] INFO io.swagger.parser.Swagger20Parser - reading from dart
    [main] INFO io.swagger.codegen.ignore.CodegenIgnoreProcessor - No .swagger-codegen-ignore file found.
    Exception in thread "main" java.lang.RuntimeException: missing swagger input or config!
        at io.swagger.codegen.DefaultGenerator.generate(DefaultGenerator.java:764)
        at io.swagger.codegen.cmd.Generate.run(Generate.java:299)
        at io.swagger.codegen.SwaggerCodegen.main(SwaggerCodegen.java:35)
Run Code Online (Sandbox Code Playgroud)

我正在尝试从 swagger url 获取 DART 包。 https://github.com/swagger-api/swagger-codegen

我能够实现此处为 PETSTORE API 完成的所有包和步骤: https://github.com/swagger-api/swagger-codegen/tree/master/samples/client/petstore/dart-jaguar/swagger

但我无法从我的 MAC 中的 swagger url 创建 DART 包 我尝试安装 Homebrew …

dart flutter swagger-codegen

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

Nodejs swagger 自动生成集成

我需要使用 NodeJS 开发 API,还需要为 API 开发文档。我与 swagger auto-gen 集成来创建 swagger.json。但是如果我使用routes.js,则 swagger.json 无法正确生成,如下所示

    var express = require('express');

    module.exports = function(app) {
    var userController    = require('../controller/userController');
    var apiRouter = express.Router();
    var routerV1 = express.Router();
    var routerV2 = express.Router();

    app.use('/admin', apiRouter);
    apiRouter.use("/v1", routerV1);
    apiRouter.use("/v2", routerV2);
 
    routerV1.route('/users').get(userController.getUsersV1);    
    routerV2.route('/users').get(userController.getUsersV2);
     
   
 }
Run Code Online (Sandbox Code Playgroud)

并将这些routes.js映射到swagger.js中

请建议生成 swagger.js 的最佳方法

我们需要为所有控制器创建路由文件吗?

node.js swagger-codegen

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

Swagger 从 ASP.Net core 设置参数属性

我正在使用 Swagger 进行 OpenApi 3.0 的序列化。详细地说,我尝试使用以下格式序列化输入查询参数数组

?myArray=1,2,3,4
Run Code Online (Sandbox Code Playgroud)

我知道如何在 swagger 文档中实现这一点。只需设置parameter.explode=false即可

parameters:
  - name: myArray
    in: query
    explode: false
    ...
Run Code Online (Sandbox Code Playgroud)

但我不知道如何在控制器类的 ASP.Net Core 3.1 中设置此参数属性,以正确生成我的 swagger 文档。我尝试了一些方法,例如实现基于IParameterFilter 的过滤器,但对我来说没有任何效果。

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

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

返回正确定义SDK响应的对象数组

我有一个典型的RESTful端点,它返回一组模型,但生成的Ruby SDK返回一个新模型,Matters而不是模型数组.我可以破解生成的源代码返回,Array<Matter>但这是一个维护问题.如何指定我想Array<Matter>在YAML中返回?

paths:
  /matters:
    get:
    ...
    responses:
      200:
        schema:
          $ref: "#/definitions/Matters"
...
definitions:
  Matter:
    type: "object"
    properties:
      id:
        type: "string"
        description: "Database identifier of the object."
      caseId:
        type: "string"
        description: "Database identifier of the Case object."
      clientMatterNumber:
        type: "string"
        description: "Client/matter billing code."
      judge:
        type: "string"
        description: "Initials of the presiding judge."
      caseNumber:
        type: "string"
        description: "Canonical case number."
      caseTitle:
        type: "string"
        description: "Canonical case title."
      natureOfSuit:
        type: "string"
        description: "Judicial Conference designation of …
Run Code Online (Sandbox Code Playgroud)

swagger swagger-2.0 swagger-codegen

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

使用swagger和yaml生成java类

我想使用 Maven 插件swagger-codegen-maven-plugin版本生成我的 Java 类2.2.3。这是我的 pom.xml 文件及其配置:

<plugin>
    <groupId>io.swagger</groupId>
    <artifactId>swagger-codegen-maven-plugin</artifactId>
    <version>2.2.3</version>
    <executions>
        <execution>
            <goals>
                <goal>generate</goal>
            </goals>
            <configuration>
                <inputSpec>${basedir}/src/main/resources/swagger/project.yaml</inputSpec>
                <language>java</language>
                <configOptions>
                    <sourceFolder>src/gen/java/main</sourceFolder>
                </configOptions>
            </configuration>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

我的project.yaml 文件包含以下内容:

definitions:
    Parent:
        type: "object"
        discriminator: "type"
        required:
            - type
        properties:
            id:
                type: "integer"
                format: "int64"
            code:
                type: "string"
   ChildA:
       allOf:
           - $ref: "#/definitions/Parent"
           - properties:
                 attributeA:
                     type: "string"
   ChildB:
       allOf:
           - $ref: "#/definitions/Parent"
           - properties:
                 attributeB:
                     type: "string"
Run Code Online (Sandbox Code Playgroud)

所有 3 个类均已生成,然后我想创建ChildAChildB使用 Web 服务。所以我的方法是:

@POST …
Run Code Online (Sandbox Code Playgroud)

java yaml swagger swagger-codegen

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

安装 Swagger CodeGen 时遇到问题

我使用命令安装了 Swagger CodeGen

npm install swagger-codegen -g
Run Code Online (Sandbox Code Playgroud)

所以我应该安装它,但是发生了一些错误/故障。每次进入

swagger-codegen -v
Run Code Online (Sandbox Code Playgroud)

我收到以下消息

'swagger-codegen' 不是内部或外部命令,也不是可运行的程序或批处理文件。

我不知道该怎么做。我应该如何解决这个问题?我正在尝试遵循教程,但讲师从不展示他如何安装程序。

在 GitHub 下,说明没有意义

先决条件 如果您正在寻找最新的稳定版本,您可以直接从 Maven.org 获取它(至少是 Java 7 运行时):

wget http://central.maven.org/maven2/io/swagger/swagger-codegen-cli/2.3.1/swagger-codegen-cli-2.3.1.jar -O swagger-codegen-cli.jar

java -jar swagger-codegen-cli.jar help
Run Code Online (Sandbox Code Playgroud)

对于 Windows 用户,您需要安装 wget 或者您可以在 PowerShell (3.0+) 中使用 Invoke-WebRequest,例如

Invoke-WebRequest -OutFile swagger-codegen-cli.jar http://central.maven.org/maven2/io/swagger/swagger-codegen-cli/2.3.1/swagger-codegen-cli-2.3.1.jar
Run Code Online (Sandbox Code Playgroud)

我应该把这些放在命令行中吗?试过了,没用

intellij-idea swagger-codegen jakarta-ee

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

使用 swagger 和 GRPC 生成响应示例值

我正在使用 gRPC 服务生成 swagger json 文件protoc-gen-swagger。输出 json 是使用空响应示例生成的,我想将响应示例添加到定义中,以便它自动填充到生成的 json 中。

这是我目前的定义。

service UserService {
  rpc GetUser (GetUserRequest) returns (UserResponse){
    option (google.api.http) = {
      get: "/api/v1/user/{username}"
      response_body: "*"
    };
    option (grpc.gateway.protoc_gen_swagger.options.openapiv2_operation) = {
      description: "Returns user object";
      operation_id: "get_user";
      summary: "Get User";
    };
  }
}

message GetUserRequest {
  string username = 1;
}

message UserResponse {
  User user = 1;
}

message User {
  string first_name = 1;
  string last_name = 2;
  string username = 3;
}
Run Code Online (Sandbox Code Playgroud)

当我使用命令生成 swagger …

swagger grpc openapi swagger-codegen grpc-go

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

Byte[] 在 REST API 中作为 base64 返回

我有一个从 Swagger 自动生成的 API,其中响应对象有一个 binary field MyBinaryMyBinary在 Swagger 中定义为:

MyReponse:
  type: object
  properties:
    MyBinary:
      type: string
      format: binary
Run Code Online (Sandbox Code Playgroud)

这将生成一个 C# 对象:

pubic class MyResponse
{
  public byte[] MyBinary {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

当我在 Postman 中调用这个 EP 时,我看到它MyBinary以 base64 编码的字符串形式返回:

{
  "MyBinary": "....ydCB1bmQgUXVhcms="
}
Run Code Online (Sandbox Code Playgroud)

里面有一个图像。我希望该字段包含类似?PNG ???? IHDR???È???È?.....

为什么以及在哪里进行 base64 编码?我找不到有关该主题的体面 Swagger 描述或 .net 文档。

问题是我们有 3 个 API 客户端:iOS、Android 和 Web。iOS 成功地Data从 Swagger生成类型,并以某种方式设法自动将 base64 加载到其中,但 Android (Java) 和 Web (TypeScript) 抛出异常,表示他们期望二进制文件但收到字符串。

有人可以向我解释一下,为什么 byte[] 在 .net …

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

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

swift / openapi中“内容”的含义是“响应”:

使用扬鞭/ OpenAPI的(随后招摇,代码生成),我一直没能找到有什么区别应该是之间

这是从https://swagger.io/specification/#responsesObject获取的 (第一个示例,json格式)

"responses" : {
  "200": {
    "description": "a pet to be returned",
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/Pet"
} } } } }
Run Code Online (Sandbox Code Playgroud)

"responses" : {
  "200": {
    "description": "a pet to be returned",
    "schema": {
      "$ref": "#/components/schemas/Pet"
} } }
Run Code Online (Sandbox Code Playgroud)

我已将此示例放入一个简单的json swagger规范(json)中,并运行Swagger-Codegen(python,flask)来生成我的控制器和模型。Yaml似乎是首选的内部表示形式,因此当生成器运行时,它将创建一个yaml文件。

对于前者,响应类型为“无”

responses:
  200:
    description: "a pet to be returned"
Run Code Online (Sandbox Code Playgroud)

而后者产生了我认为我应该期望的:

responses:
  200:
    description: "a pet to be returned"
    schema:
      $ref: "#/components/schemas/Pet"
Run Code Online (Sandbox Code Playgroud)

例如,似乎使用以下语法从第一个语法中省略了模式 Content

内容是什么意思?我在示例中缺少什么,为什么Content结果没有返回Non-None返回类型和相应的模式。

请注意SwaggerCodgen:生成的代码与生成的yaml所说的完全匹配,因此在这里我没有包括任何这些细节

yaml swagger swagger-codegen

0
推荐指数
1
解决办法
376
查看次数

方法参数中带有 HttpServletRequest 的 Spring Boot 的 Swagger codegen delegatePattern

目前我有一个项目,它使用swagger-codegen-maven-plugin生成带有delegatePattern.

pom.xml

[...]
<plugin>
    <groupId>io.swagger</groupId>
    <artifactId>swagger-codegen-maven-plugin</artifactId>
    <version>2.3.1</version>
    <executions>
        <execution>
            <id>generate-api-v1</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>generate</goal>
            </goals>
            <configuration>
                <inputSpec>${project.basedir}/src/main/resources/specs/v1.yaml</inputSpec>
                <language>spring</language>
                <apiPackage>test.foo.bar.v1</apiPackage>
                <modelPackage>test.foo.bar.v1.v1.model</modelPackage>
                <generateSupportingFiles>false</generateSupportingFiles>
                <configOptions>
                    <java8>true</java8>
                    <dateLibrary>java8</dateLibrary>
                    <delegatePattern>true</delegatePattern>
                    <useOptional>true</useOptional>
                    <useBeanValidation>true</useBeanValidation>
                </configOptions>
            </configuration>
        </execution>
    </executions>
</plugin>
[...]
Run Code Online (Sandbox Code Playgroud)

目前它生成这样的控制器接口:

public interface FooApi {

    FooDelegate getDelegate();

    @ApiOperation(value = "", nickname = "fooAction", notes = "", response = String.class)
    @ApiResponses(value = {
        @ApiResponse(code = 200, message = "Success", response = String.class)
    })
    @RequestMapping(value = "/fooAction",
        produces = { "text/plain" }, 
        method = RequestMethod.GET) …
Run Code Online (Sandbox Code Playgroud)

pom.xml swagger spring-boot swagger-codegen

0
推荐指数
1
解决办法
3158
查看次数