如何在 OpenAPI 的查询参数中指定 base64 编码对象

问题描述

我正在尝试使用 OpenAPI 规范(特别是使用 Swashbuckle 和 ASP.NET Core)记录现有 API。 对于许多端点,api 使用单个查询参数,它是一个 filter 对象 - 保存实际参数 - 它是 base64 编码的。

我已经成功添加了 Swashbuckle 库并且可以生成一个 swagger.json。

然而,生成的规范没有正确描述上述端点。相反,过滤器对象的属性名称被声明为查询参数,因此基于规范自动生成的客户端不起作用。

The spec 仅在 String 和 File 的 format 中提及 base64,而不是 Object。

  1. 是否可以(如果可以,如何)在 OpenAPI 中描述这种类型的端点?

  2. 是否可以(如果可以,如何)使用 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 (将#修改为@)