Web API で Swashbuckle (C# のスワガー) を使用しています。リストを返す GET エンドポイントがいくつかあり、ユーザーがページごとのパラメーターとページ パラメーターを QueryString に追加できるようにします。
例: http://myapi.com/endpoint/?page=5&perpage=10
Swagger が「クエリ」のパラメーターをサポートしていることがわかりますが、Swashbuckle でそれを行うにはどうすればよいですか?
コメントの 1 つで、カスタム属性を作成して必要なことを実行できるようにすることで問題を解決したことを述べています。以下は私のソリューションのコードです:
[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)]