Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在使用NSwag生成的客户端方法名称中包含Http请求方法名称_C#_Openapi_Nswag - Fatal编程技术网

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

C# 如何在使用NSwag生成的客户端方法名称中包含Http请求方法名称,c#,openapi,nswag,C#,Openapi,Nswag,当我使用NSwag为API生成C#客户端时, 其中API包括可用于多种Http请求类型(例如POST、GET)的端点 客户端为每个请求生成一个方法,该方法具有相同的基本名称和一个数字 例如,使用此API: 该架构包含支持GET和POST请求的端点/contract,以及支持GET、POST和DELETE请求的端点/contract/{ID} 生成的客户端具有以下方法: ContractAsync用于无ID的GET请求 Contract2Async用于无ID的POST请求 Contract3As

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

例如,使用此API:

该架构包含支持
GET
POST
请求的端点
/contract
,以及支持
GET
POST
DELETE
请求的端点
/contract/{ID}

生成的客户端具有以下方法:

  • ContractAsync
    用于无ID的GET请求
  • Contract2Async
    用于无ID的POST请求
  • Contract3Async
    用于ID为的GET请求
  • Contract4Async
    用于ID为的POST请求
  • Contract5Async
    用于ID为的删除请求
我希望它生成名为:

  • GetContractAsync
    用于不带ID的GET请求
  • PostContractAsync
    用于无ID的POST请求
  • GetContractAsync
    用于ID为的GET请求(方法重载)
  • PostContractAsync
    用于ID为的POST请求(方法重载)
  • DeleteContractAsync
    用于ID为的删除请求
目前,我只是手动重命名这些方法

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


(或者是否有其他工具可以提供此结果?

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


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

我没有找到如何在MVC应用程序中插入我自己的IOperationNameGenerator的示例。我本以为传递给services.AddSwaggerDocument的配置会对此做出规定。我希望有一个“傻瓜”的代码示例。