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

Erg*_*wun 12 c# openapi nswag

当我使用 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 来生成这些方法名称?

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

Ric*_*ter 2

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

\n\n

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

\n\n

另一个选择是预处理规范并将 \xe2\x80\x9coperationId\xe2\x80\x9ds 更改为 \xe2\x80\x9ccontroller_operation\xe2\x80\x9d 形式(基于 NSwag.Core 包的简单控制台应用程序)

\n

  • 我没有找到有关如何在 MVC 应用程序中插入我自己的 IOperationNameGenerator 的示例。我本以为传递给 services.AddSwaggerDocument 的配置会有这样的规定。我希望有一个“傻瓜”代码示例。 (12认同)