gpt4 book ai didi

angular - NSwagStudio,在NSwag生成的客户端方法名中包含Http请求方法名

转载 作者:行者123 更新时间:2023-12-04 09:34:07 24 4
gpt4 key购买 nike

我使用 NSwagStudio 为 .Net Core 3.1 API 生成了一个 Angular 客户端。API 包括可用于多种 Http 请求类型(例如 POST、GET)的端点。客户端为每个具有相同基本名称的请求生成一个方法,外加一个数字。

该架构包含一个端点/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 请求

等等

问题的答案是“实现并提供自己的 IOperationNameGenerator”参见 https://stackoverflow.com/a/49935417/4180382

我不知道如何实现和提供这个 IOperationNameGenerator。

“通过反射的 Web Api”选项卡包含几个自定义实现,但没有提到“IOperationNameGenerator”

如何实现 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

关于angular - NSwagStudio,在NSwag生成的客户端方法名中包含Http请求方法名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62676722/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com