gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 06:22:17 27 4
gpt4 key购买 nike

我有一个场景,其中 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 响应,但却得到了二进制响应。将 produces 更改为 image/png 应该可以解决 UI 2.x 的问题。

但是,Swagger UI 3.0.19 有一个不同的问题 - 当响应是图像时,UI 会向同一端点重复请求,但使用 GET 来显示图像而不是呈现现有响应。因此,如果端点不接受 GET,或者 GET 返回的图像与 POST 不同,则不会显示原始图像响应。 HelderSepu reported the double request issue给 Swagger UI 开发人员,它已在 Swagger UI 3.0.20 中修复。

关于Swagger UI 不在 POST 中显示图像/png 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45224263/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com