如何在使用NSwag生成的客户端方法名称中包含Http请求方法名称

时间:2018-04-18 04:26:43

标签: c# openapi nswag

当我使用NSwag为API生成C#客户端时, API包含可与多个Http请求类型一起使用的端点(例如POST,GET) 客户端为每个具有相同基本名称的请求生成一个方法,加上一个数字。

E.g。使用此API:https://api.premiumfunding.net.au/assets/scripts/swagger/v1/swagger.json

架构包含支持tr[bgcolor],tr[style]/contract请求的端点GET,以及支持POST/contract/{ID}GET的端点POST DELETE请求。

生成的客户端有方法:

  • ContractAsync表示没有ID的GET请求
  • Contract2Async表示没有ID的POST请求
  • Contract3Async用于ID为
  • 的GET请求
  • Contract4Async用于ID为
  • 的POST请求
  • Contract5Async用于ID为
  • 的DELETE请求

我希望它能生成名为的方法:

  • GetContractAsync表示没有ID的GET请求
  • PostContractAsync表示没有ID的POST请求
  • GetContractAsync用于ID(方法重载)的GET请求
  • PostContractAsync用于带ID的POST请求(方法重载)
  • DeleteContractAsync用于ID为
  • 的DELETE请求

目前我只是手动重命名方法。

是否可以配置NSwag来生成这些方法名称?

(或者是否有替代工具会给我这个结果?)

1 个答案:

答案 0 :(得分:2)

您可以实现并提供自己的IOperationNameGenerator:

https://github.com/RSuter/NSwag/blob/master/src/NSwag.CodeGeneration/OperationNameGenerators/IOperationNameGenerator.cs

另一种选择是预处理规范并将“operationId”更改为“controller_operation”形式(基于NSwag.Core包的简单控制台应用程序)