Swashbuckle设置手动operationId,具有相同动词的多重操作

问题描述 投票:10回答:2

我需要知道是否可以设置自定义operationid或命名约定,我的意思是我知道操作过滤器可以用operationId的生成方式来覆盖

https://azure.microsoft.com/en-us/documentation/articles/app-service-api-dotnet-swashbuckle-customize/

using Swashbuckle.Swagger;
using System.Web.Http.Description;

namespace Something
{
    public class MultipleOperationsWithSameVerbFilter : IOperationFilter
    {
        public void Apply(
            Operation operation,
            SchemaRegistry schemaRegistry,
            ApiDescription apiDescription)
        {
            if (operation.parameters != null)
            {
                operation.operationId += "By";
                foreach (var parm in operation.parameters)
                {
                    operation.operationId += string.Format("{0}",parm.name);
                }
            }
        }
    }
}

在SwaggerConfig.cs中

 c.OperationFilter<MultipleOperationsWithSameVerbFilter>();

现在这对转换摇摇晃晃的描述很有帮助,请在下面检查:

enter image description here

很好,现在我结束在一个黑暗的地方,与可能的情况类似的示例:在同一控制器上,我有两个端点

  • 发布:/客户机构:{电子邮件,位置...。]
  • 发布:/ customer / search boddy:{一个过滤器,随便}}>
  • 该示例不是很正确(最后一个帖子应该是get),但仍然假定在这种特殊情况下无法更改webapi(用于分离的新控制器),我将尝试找出一种为每个操作生成不同的operationId的方法不知何故,但我的问题是这样的:

是否可以以某种方式装饰与[JsonIgnore]或与[Route(“ customer / delete”)]一起使用,以明确显示operationId

我需要知道是否可以设置自定义operationid或命名约定,我的意思是我知道操作过滤器可以覆盖如何生成operationId的方式https:// azure ....

c# asp.net-web-api swagger asp.net-web-api-routing swashbuckle
2个回答
23
投票
您可以使用Swashbuckle提供的SwaggerOperationAttribute

1
投票

UPDATE:

© www.soinside.com 2019 - 2024. All rights reserved.