我使用a.Net为NSwagStudio核心3.1API生成一个棱角客户端。API包含可与多个Http请求类型(例如POST、GET)一起使用的端点。客户端为每个请求生成一个具有相同基本名称的方法,外加一个数字。
架构包含支持GET和POST请求的端点/contract/{ID},以及支持GET、POST和DELETE请求的端点/contract/{ID}。
生成的客户端具有如下方法:
ContractAsyncContract2AsyncContract3AsyncContract4AsyncContract5Async我希望它生成名为:
GetContractAsyncPostContractAsync等
问题的答案是“实现并提供自己的IOperationNameGenerator”(请参阅https://stackoverflow.com/a/49935417/4180382 )。
我不知道如何实现和提供这个IOperationNameGenerator。
"Web通过反射“选项卡包含几个自定义实现,但没有提到"IOperationNameGenerator”
如何实现IOperationNameGenerator?
发布于 2021-02-09 02:42:42
在您的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是我从源代码这里中使用的缺省值。
https://stackoverflow.com/questions/62676722
复制相似问题