我有一个场景,POST方法返回" image / png"内容。 API在Postman中完美运行,我能够看到图像。
我使用Swagger来记录我的API。由于某种原因"尝试"功能崩溃任何返回图像的POST方法。它冻结加载,我在浏览器控制台中看到以下内容:
cannot parse JSON/YAML content
swagger-ui-min-js:14 Uncaught TypeError: Failed to execute 'createObjectURL' on 'URL': No function was found that matched the signature provided.
at C.n.showStatus (swagger-ui-min-js:14)
at showCompleteStatus (swagger-ui-min-js:14)
at response (swagger-ui-min-js:9)
at h (swagger-ui-min-js:7)
at t.on.response (swagger-ui-min-js:7)
at swagger-ui-min-js:7
at h.callback (swagger-ui-min-js:13)
at h.<anonymous> (swagger-ui-min-js:13)
at h.r.emit (swagger-ui-min-js:13)
at XMLHttpRequest.n.onreadystatechange (swagger-ui-min-js:13)
有关如何解决此问题的任何想法? API工作(至少在Postman中),它只是Swagger UI似乎有问题。 我通过nuget包Swashbuckle.Core和Swashbuckle版本5.6.0安装了Swagger
答案 0 :(得分:1)
swagger-ui团队证实这只是一个只在POST上发生的错误:
https://github.com/swagger-api/swagger-ui/issues/3435
作为一种解决方法,我建议您使用GET(如果可能)
swagger-ui团队修复了版本3.0.20的错误
我把那个版本合并到我的叉子里,你可以在这里得到最新版本:
https://www.nuget.org/packages/Swagger-Net/8.3.0.2001
答案 1 :(得分:1)
正如评论中所阐明的,M_M最初使用的是Swagger UI 2.x,规范看起来像这样:
paths:
/api/PngImage:
post:
produces:
- application/json
- text/json
- text/html
responses:
200:
description: OK
schema:
type: object
规范有两个问题:
type: file
,而不是type: object
。在Swagger UI 2.x中,“无法解析JSON / YAML内容”错误是由错误的produces
引起的 - UI期望JSON响应但是会得到二进制响应。将produces
更改为image/png
可以解决UI 2.x的问题。