[HttpGet]
[Route("students")]
[SwaggerOperation(Tags = new[] { "Student" })]
[SwaggerResponse(HttpStatusCode.OK, Type = typeof(ResponseModel<IList<Student>>))]
[SwaggerResponseExample(HttpStatusCode.OK, typeof(StudentResponseExample))]
[SwaggerResponse(HttpStatusCode.InternalServerError)]
public IHttpActionResult SearchStudent()
{
IDictionary<string, string> searchParams = null;
searchParams = ControllerContext.GetQueryStrings();
.
.
.
}
上面的API有三个可选参数,它们将作为查询字符串传递
-
SyncDate - 长
-
OffSet - int
-
限制 - 整数
用户无法在swagger UI中输入这些可选查询参数 . 请指导我实现可选的查询参数 .
我使用的是swashbuckle,我更喜欢使用注释,而不是对每个API方法都有冗长的评论部分,以实现swagger功能 .
我引用了以下Adding Query String Params to my Swagger Specs并在Web API的 Filters 文件夹中创建了 SwaggerParameterAttribute 类,当尝试在给定的G lobalConfiguration.Configuration .EnableSwagger 中添加 OperationFilter 时,它会抛出类型或命名空间名称 SwaggerParametersAttributeHandler 找不到 . 我甚至添加了 Filters 文件夹命名空间,但仍然存在错误 .
请指导如何在swagger中实现可选的查询参数
1 回答
Swagger工作的方式是根据你的Action的签名拉出参数给你的Action,但是你在这里从ControllerContext获得这些值,这显然是Swagger永远不会意识到的 .
所以你需要改变Action的签名并在那里传递你的参数 .
如果你将它们设为可空类型,它们将被视为可选项 -