问题描述
当我使用 NSwag 为 API 生成 C# 客户端时,其中 API 包括可用于多种 Http 请求类型(例如 POST、GET)的端点客户端为每个具有相同基本名称的请求生成一个方法,并加上一个数字.
When I generate a C# client for an API using NSwag,where the API includes endpoints that can be used with multiple Http request types (e.g. POST, GET)the client generates a method for each request with the same base name, plus a number.
例如使用此 API:https://api.premiumfunding.net.au/assets/scripts/swagger/v1/swagger.json
架构包含一个端点 /contract
支持 GET
和 POST
请求,以及一个端点 /contract/{ID}
支持 GET
、POST
和 DELETE
请求.
The schema contains an endpoint /contract
that supports GET
and POST
requests, and an endpoint /contract/{ID}
that supports GET
, POST
and DELETE
requests.
生成的客户端有方法:
ContractAsync
用于没有 ID 的 GET 请求Contract2Async
用于没有 ID 的 POST 请求Contract3Async
用于带有 ID 的 GET 请求Contract4Async
用于带有 ID 的 POST 请求Contract5Async
用于带有 ID 的 DELETE 请求
ContractAsync
for GET requests without IDContract2Async
for POST requests without IDContract3Async
for GET requests with IDContract4Async
for POST requests with IDContract5Async
for DELETE requests with ID
我希望它生成名为:
GetContractAsync
用于没有 ID 的 GET 请求PostContractAsync
用于没有 ID 的 POST 请求GetContractAsync
用于带有 ID 的 GET 请求(方法重载)PostContractAsync
用于带有 ID 的 POST 请求(方法过载)DeleteContractAsync
用于带有 ID 的 DELETE 请求
GetContractAsync
for GET requests without IDPostContractAsync
for POST requests without IDGetContractAsync
for GET requests with ID (method overload)PostContractAsync
for POST requests with ID (method overload)DeleteContractAsync
for DELETE requests with ID
目前我只是手动重命名方法.
At the moment I am just renaming the methods manually.
是否可以配置 NSwag 来生成这些方法名称?
(或者有没有其他工具可以给我这个结果?)
(Or is there an alternative tool that will give me this result?)
推荐答案
您可以实现并提供自己的 IOperationNameGenerator:
You can implement and provide an own IOperationNameGenerator:
另一种选择是预处理规范并将operationId"更改为controller_operation"形式(基于 NSwag.Core 包的简单控制台应用程序)
Another option would be to preprocess the spec and change the "operationId"s to the form "controller_operation" (simple console app based on the NSwag.Core package)
这篇关于如何在使用 NSwag 生成的客户端方法名称中包含 Http 请求方法名称的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!