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

时间:2020-07-01 12:20:50

标签: angular asp.net-core nswagstudio

我使用NSwagStudio为.Net Core 3.1 API生成Angular客户端。 该API包含可与多种Http请求类型(例如POST,GET)一起使用的端点。 客户端会为每个请求使用相同的基本名称以及一个数字生成一个方法。

该模式包含一个支持/contractGET请求的端点POST,以及一个支持/contract/{ID}GET和{ POST个请求。

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

  • DELETE用于不带ID的GET请求
  • ContractAsync用于不带ID的POST请求
  • Contract2Async用于ID为的GET请求
  • Contract3Async用于ID为的POST请求
  • Contract4Async用于ID为ID的DELETE请求

我希望它生成名为:

的方法
  • Contract5Async用于不带ID的GET请求
  • GetContractAsync用于不带ID的POST请求

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

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

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

如何实现IOperationNameGenerator?

1 个答案:

答案 0 :(得分:2)

在您的 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

中使用的默认值
相关问题