Java REST Client的swagger-codegen标头参数

Mub*_*bin 3 java swagger-codegen

我正在使用swagger-codegen为我的一个REST API生成Java REST客户端。REST API使用可选的标头参数。客户端中生成的方法具有一个附加参数,该参数采用标头。我希望在方法签名中没有header参数的情况下生成方法。我已经阅读了文档,但是找不到任何参考。

例如,对于具有选项X-CUSTOM-HEADER参数的GET all API,swagger-codegen生成如下方法:

public List<SomeType> findAllUsingGET1(String optionalHeader)
Run Code Online (Sandbox Code Playgroud)

我希望在哪里:

public List<SomeType> findAllUsingGET1()
Run Code Online (Sandbox Code Playgroud)

寻找解决方法的指针,而不是自定义客户端代码的生成。

编辑1:添加JSON规范

  "get": {
    "summary": "findAll",
    "operationId": "findAllUsingGET1",
    "consumes": [
      "application/json"
    ],
    "produces": [
      "application/json"
    ],
    "parameters": [
      {
        "name": "X-CUSTOM-HEADER",
        "in": "header",
        "description": "Custom Header",
        "required": false,
        "type": "string"
      }
    ],
    "responses": {
      "200": {
        "description": "OK",
        "schema": {
          "type": "string"
        }
      },
      "401": {
        "description": "Unauthorized"
      },
      "403": {
        "description": "Forbidden"
      },
      "404": {
        "description": "Not Found"
      }
    }
  }
Run Code Online (Sandbox Code Playgroud)

Wil*_*eng 5

如果要从Java API客户端的方法签名中删除参数(可选),唯一的方法是从Swagger / OpenAPI规范中删除参数。

要添加默认标题,可以使用以下addDefaultHeader方法ApiClienthttps : //github.com/swagger-api/swagger-codegen/blob/master/samples/client/petstore/java/okhttp-gson/src/main/java/ io / swagger / client / ApiClient.java#L528

更新:标题参数,类似于表单查询参数,是作为方法参数生成的。从开发人员的角度来看,它只是另一个参数(他们不需要知道该参数是标题,表单还是查询参数)

  • 我的问题不是关于删除可选参数,而是关于从方法签名中的请求中删除可选标头。我唯一关心的是,为什么swagger-codegen会将标头请求视为方法参数? (3认同)