Swashbuckle添加所需的请求标头

时间:2018-01-09 08:58:42

标签: .net-core swagger swashbuckle

我正在实现一个REST API,我们使用Swashbuckle作为消费者文档。在我们的资源的PUT端点上,我们要求消费者使用资源的先前ETag发送If-Match标头。

我们想将此添加到Swashbuckle文档中,但似乎没有找到。我们如何向Swashbuckle添加对于某些端点,是否需要If-Match标头?

氪,

托马斯

1 个答案:

答案 0 :(得分:3)

你可以使用IOperationFilter这样做,这是一个示例代码:

    public class AddRequiredHeaderParameters : IOperationFilter
    {
        public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
        {                
            if (operation.operationId == "ValueProvider_Put")
            {
                if (operation.parameters == null)
                    operation.parameters = new List<NonBodyParameter>();
                operation.parameters.Add(HeaderParam("CID", "101"));                    
            }
        }

        public IParameter HeaderParam(string name, string defaultValue, bool required = true, string type = "string", string description = "")
        {
            return new NonBodyParameter
            {
                Name = name,
                In = "header",
                Default = defaultValue,
                Type = type,
                Description = description,
                Required = required
            };
        }
    }

我在这里有一个工作样本:

  

https://github.com/heldersepu/SwashbuckleTest/blob/master/Swagger_Test/App_Start/SwaggerConfig.cs#L551

以下是用户界面的外观:

  

http://swashbuckletest.azurewebsites.net/swagger/ui/index?filter=ValueProvider#/ValueProvider/ValueProvider_Put