首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSwagStudio,在用NSwag生成的客户端方法名称中包括Http请求方法名。

NSwagStudio,在用NSwag生成的客户端方法名称中包括Http请求方法名。
EN

Stack Overflow用户
提问于 2020-07-01 12:20:50
回答 1查看 879关注 0票数 2

我使用a.Net为NSwagStudio核心3.1API生成一个棱角客户端。API包含可与多个Http请求类型(例如POST、GET)一起使用的端点。客户端为每个请求生成一个具有相同基本名称的方法,外加一个数字。

架构包含支持GETPOST请求的端点/contract/{ID},以及支持GETPOSTDELETE请求的端点/contract/{ID}

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

  • 不带ID的GET请求的ContractAsync
  • 用于没有ID的POST请求的Contract2Async
  • 带有ID的GET请求的Contract3Async
  • 带有ID的POST请求的Contract4Async
  • 具有ID的删除请求的Contract5Async

我希望它生成名为:

  • 不带ID的GET请求的GetContractAsync
  • 用于没有ID的POST请求的PostContractAsync

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

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

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

如何实现IOperationNameGenerator?

EN

回答 1

Stack Overflow用户

发布于 2021-02-09 02:42:42

在您的Startup.cs中这样做:

代码语言:javascript
复制
services.AddSwaggerGen(c =>
{
    ...
    c.CustomOperationIds(d => d.ActionDescriptor is ControllerActionDescriptor controllerActionDescriptor ? controllerActionDescriptor.MethodInfo.Name : d.ActionDescriptor.AttributeRouteInfo?.Name);
});

同样的情况也可以通过c.SwaggerGeneratorOptions.OperationIdSelector设置。

请注意,ActionDescriptor.AttributeRouteInfo?.Name是我从源代码这里中使用的缺省值。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62676722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档