【发布时间】:2017-12-05 13:32:40
【问题描述】:
我希望使用 Swashbuckle 为如下所示的 Web API 方法生成 Swagger 文档和 Swagger UI(它实际上是与 PDF 的邮件合并):
[HttpPost]
[ResponseType(typeof(byte[]))]
public HttpResponseMessage MergeValues([FromUri]Dictionary<string, string> mergeValues,
[FromBody]byte[] pdfTemplate)
{
return MergeStuff();
}
这目前不起作用,或者至少我不确定如何与生成的 Swagger UI 交互。
这将创建以下 Swagger UI,这似乎是合理的,但我不确定如何处理它才能正确填充它(或者它是否正确)。我正在使用最新 Nuget 中的几乎所有默认 Swashbuckle 设置。
字节数组:如果我为字节数组输入Base64编码的文本,字节数组总是显示为空。结果我只需要我的BASE64文本被包围双引号,然后就可以了。
字典:我尝试了各种类型的 JSON 表达式(数组、对象等),但无法获取要填充的字典中的任何值(生成的字典对象有 0 个项目)。
我有能力改变事情,我想知道如何做到这一点。例如,如果将字典更改为 KeyValuePair<string,string> 的数组有帮助,那么我们就这样做吧。
我知道我想要避免的选项:
- 将这些输入类型更改为字符串并进行我自己的手动反序列化/解码。我想明确我的类型,不要太花哨。
- 自定义活页夹。我想使用标准/默认绑定器,因此我需要维护的代码/复杂性更少。
【问题讨论】:
-
您似乎正在尝试上传文件,请看这里:github.com/domaindrivendev/Swashbuckle/issues/120
-
实际上,对于
byte[]文件,我只需要在base64 内容周围加上双引号。加上引号,这行得通。现在我只需要找出如何处理Dictionary。
标签: c# asp.net-web-api swagger swashbuckle