Swagger UI生成用于通用REST调用

Tom*_*ste 5 rest swagger swagger-ui swashbuckle asp.net-core

我想要什么:

我希望能够生成将键/值传递到URL的swagger文档.这样我就可以使用通用参数控制器来处理像Dictionary这样的请求.

如果swagger无法生成它,有没有办法通过对我的对象使用反射来生成文档?这样我仍然可以使用泛型方法

如果没有,那么最好的方法是让每个人都知道正确的方法是什么.

我为什么要这样做

我正在开发一个新的API,我正在使用swagger来创建文档.在这个API中,我想使用一些通用方法来防止硬编码.例如,在PATCH方法上,我使用a Dictionary<string, string>来获取属性/值组合,在GET我使用自定义对象作为参数.在这两种情况下,swagger都无法生成正确的参数字段,因为它将参数作为url键.

示例动作和表单 - 不正确

public async Task<IActionResult> Patch(int id, Dictionary<string, string> viewModel)
{
    return await ConnectionWrapper(() => connector.Patch(id, viewModel));
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

这使用正文而不是查询

其他例子 - 不正确

在GET中,我有一个带有自定义模型绑定器的模型来处理所有其余的URL参数.问题是因为定义了模型,它将过滤器视为属性.

在此输入图像描述

然后它在URL中,但它看起来像http://example.com/controller/method/id?sort=prop_asc&filter=propTwo%3D=value,而不是http://example.com/controller/method/ ID?排序= prop_asc&propTwo =值

期望的输出

在此输入图像描述

我已修改HTML以模拟上图中我想要的内容.要调用的URL是http://example.com/controller/method/id?propertyName=propertyValue.

我不介意是否只有一个选项来添加通用键/值对,因为有了它我可以演示我想要的东西.

预期的解决方案

我认为解决方案在于MapTypeswagger 的启动方法或者在实现中IOperationFilter,但是我还没弄清楚.