[英]NSwagStudio, include Http request method name in client method names generated with NSwag
我使用 NSwagStudio 為 a.Net Core 3.1 API 生成 Angular 客戶端。 API 包括可用於多種 Http 請求類型(例如 POST、GET)的端點。 客戶端為每個請求生成一個具有相同基本名稱和數字的方法。
該模式包含一個支持GET
和POST
請求的端點 / /contract
,以及一個支持GET
、 POST
和DELETE
請求的端點/contract/{ID}
。
生成的客戶端具有如下方法:
ContractAsync
Contract2Async
用於沒有 ID 的 POST 請求Contract3Async
Contract4Async
Contract5Async
我希望它生成名為:
GetContractAsync
用於沒有 ID 的 GET 請求PostContractAsync
用於沒有 ID 的 POST 請求ETC
問題的答案是“實現並提供自己的 IOperationNameGenerator”參見https://stackoverflow.com/a/49935417/4180382
我不知道如何實現和提供這個 IOperationNameGenerator。
“Web Api 通過反射”選項卡包含幾個自定義實現,但未提及“IOOperationNameGenerator”
如何實現 IOperationNameGenerator?
在您的 Startup.cs 中執行以下操作:
services.AddSwaggerGen(c =>
{
...
c.CustomOperationIds(d => d.ActionDescriptor is ControllerActionDescriptor controllerActionDescriptor ? controllerActionDescriptor.MethodInfo.Name : d.ActionDescriptor.AttributeRouteInfo?.Name);
});
同樣也可以通過c.SwaggerGeneratorOptions.OperationIdSelector
設置
請注意, ActionDescriptor.AttributeRouteInfo?.Name
是我在源代碼中使用的默認值here
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.