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

Ada*_*mAL 7 base64 swagger swashbuckle openapi

我正在尝试使用 OpenAPI 规范(特别是使用 Swashbuckle 和 ASP.NET Core)记录现有 API。\n对于许多终结点,API 使用单个查询参数,该参数是一个对象 \ filterxe2\x80\x93 ,其中包含实际的参数 \xe2\x80\x93 是 base64 编码的。

\n

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

\n

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

\n

该规范仅提及与format字符串和文件相关的 base64,而不是与对象相关的。

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

    \n
  2. \n
  3. 是否可以(如果可以,如何)使用 Swashbuckle 正确生成此描述?

    \n
  4. \n
\n编辑\n

回应评论(可能是回答子问题 2) 所必需的)。

\n

API 源中的端点可能类似于:

\n
[HttpGet("")]\npublic async Task<IActionResult> Query([FromQuery] ThingFilter filter)\n{\n    var results = await _dataContext.ThingService.Search(filter);\n    \n    return Ok(results);\n}\n
Run Code Online (Sandbox Code Playgroud)\n

aThingFilter可能是这样的:

\n
public class ThingFilter\n{\n    public string Freetext { get; set; }\n    public List<PropertyFilter> PropertyFilters { get; set; }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

其中Startup.cs还注册了一个自定义 modelbinder,用于处理来自 base64 的转换。

\n