2017-03-27 45 views
0

我正在使用swagger-codegen为其中一个REST API生成Java REST客户端。 REST API采用可选的头部参数。客户端中生成的方法具有一个额外的参数,其中包含头部。我希望方法签名中没有头部参数的情况下生成方法。 我已阅读文档,但找不到任何参考。适用于Java REST客户端的swagger-codegen标头参数

例如,对于一个GET与选择X-CUSTOM-HEADER参数的所有API,招摇-代码生成产生象下面的方法:

public List<SomeType> findAllUsingGET1(String optionalHeader) 

其中,我想它是:

public List<SomeType> findAllUsingGET1() 

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

编辑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" 
     } 
    } 
    } 
+0

您能否包含被解析到该GET的json/yaml的部分? – moondaisy

+0

@moondaisy - 添加了API规范的JSON片段。 – Mubin

+0

请详细解释为什么您希望方法签名中没有头部参数的情况下生成方法。如果这个参数真的是可选的,那么你可以简单地将它从规范中移除,这样招徕codegen就不会将它包含在Java方法签名中。 –

回答

1

如果你想删除从Java的API客户端的方法签名的参数(可选),唯一的办法就是从扬鞭删除参数/ OpenAPI规范。

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

UPDATE:头参数,类似的形成,查询参数,方法参数生成。从开发人员的角度来看,这只是另一个参数(并且他们不需要知道参数是标题,表单还是查询参数)

+0

我的问题不是关于删除可选参数,而是关于从方法签名的请求中删除可选标头。我唯一担心的是,为什么swagger-codegen将头部请求视为方法参数? – Mubin

+0

标题参数,类似于表单,查询参数,被生成为方法参数。从开发人员的角度来看,这只是另一个参数(并且他们不需要知道参数是标题,表单还是查询参数) –

+0

感谢您的最新评论。这澄清了我的问题,并且我得出结论,我想要的不能实现,而无需手动修改swagger规范。你能否请用上面的评论更新你的答案,以便我可以接受它作为答案? – Mubin