Swagger UI在POST中不显示image / png内容

玛丽娜·梅林(Marina Melin)

我有一种情况,其中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

海伦

正如评论中所阐明的那样,M_M最初使用Swagger UI 2.x,并且规格如下所示:

paths:
  /api/PngImage:
    post:
      produces:
        - application/json
        - text/json
        - text/html
      responses:
        200:
          description: OK
          schema:
            type: object

规范有两个问题:

  • 端点返回一个PNG图像,但据说会产生JSON和HTML。
  • 文件响应(包括图片)应具有type: file,而不是type: object

在Swagger UI 2.x中,“无法解析JSON / YAML内容”错误是由错误引起的produces-UI需要JSON响应,但会获得二进制响应。更改producesimage/png应该可以解决UI 2.x的问题。

但是,Swagger UI 3.0.19存在另一个问题-当响应为图像时,UI将请求重复到同一端点,但使用GET来显示图像而不是呈现现有响应。因此,如果端点不接受GET,或者GET返回的图像与POST不同,则不会显示原始图像响应。HelderSepu向Swagger UI开发人员报告了双重请求问题,该问题已在Swagger UI 3.0.20中修复。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章