我在我的 Web API 中使用 Swashbuckle(C# 的招摇)。我有几个返回列表的 GET 端点,我允许用户将每页和页面参数添加到 QueryString
示例:http ://myapi.com/endpoint/?page=5&perpage=10
我看到 swagger 确实支持“查询”中的参数,但我如何让 Swashbuckle 做到这一点?
我在其中一条评论中提到,我通过创建自定义属性来解决我的问题,以允许我做我需要的事情。以下是我的解决方案的代码:
[AttributeUsage(AttributeTargets.Method, Inherited = false, AllowMultiple = true)]
public class SwaggerParameterAttribute : Attribute
{
public SwaggerParameterAttribute(string name, string description)
{
Name = name;
Description = description;
}
public string Name { get; private set; }
public Type DataType { get; set; }
public string ParameterType { get; set; }
public string Description { get; private set; }
public bool Required { get; set; } = false;
}
使用 Swagger Config 注册属性:
GlobalConfiguration.Configuration
.EnableSwagger(c =>
{
c.OperationFilter<SwaggerParametersAttributeHandler>();
});
然后将此属性添加到您的方法中:
[SwaggerParameter("page", "Page number to display", DataType = typeof(Int32), ParameterType = ParameterType.inQuery)]
[SwaggerParameter("perpage","Items to display per page", DataType = typeof(Int32), ParameterType = ParameterType.inQuery)]