12

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

例如使用这个 API:https ://api.premiumfunding.net.au/assets/scripts/swagger/v1/swagger.json

该模式包含一个/contract支持GETPOST请求的端点,以及一个支持/contract/{ID}和请求的端点。GETPOSTDELETE

生成的客户端有方法:

  • 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 来生成这些方法名称?

(或者是否有其他工具可以给我这个结果?)

4

1 回答 1

2

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

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

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

于 2018-04-20T06:33:27.210 回答