问题描述
我正在尝试使用 OpenAPI 规范(特别是使用 Swashbuckle 和 ASP.NET Core)记录现有 API。
对于许多端点,api 使用单个查询参数,它是一个 filter
对象 - 保存实际参数 - 它是 base64 编码的。
我已经成功添加了 Swashbuckle 库并且可以生成一个 swagger.json。
然而,生成的规范没有正确描述上述端点。相反,过滤器对象的属性名称被声明为查询参数,因此基于规范自动生成的客户端不起作用。
The spec 仅在 String 和 File 的 format
中提及 base64,而不是 Object。
-
是否可以(如果可以,如何)在 OpenAPI 中描述这种类型的端点?
-
是否可以(如果可以,如何)使用 Swashbuckle 正确生成此描述?
回应评论(可能是回答子问题 2 所必需的)。
API 源中的端点可能类似于:
[HttpGet("")]
public async Task<IActionResult> Query([FromQuery] ThingFilter filter)
{
var results = await _dataContext.ThingService.Search(filter);
return Ok(results);
}
ThingFilter
可能类似于:
public class ThingFilter
{
public string Freetext { get; set; }
public List<PropertyFilter> PropertyFilters { get; set; }
}
在 Startup.cs
中还注册了一个自定义模型绑定器,用于处理 base64 的转换。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)