1

在 Flasgger 中,我正在尝试为接受上传文件的路由创建文档。但是,尽管遵守规范,但我无法在 Flasgger UI 中显示文件选择器。

我正在使用最新的(截至今天)flasgger==0.9.1运行 OpenAPI 3 规范(如"openapi": '3.0.0'),我在 Swagger-UI 中看到了这个提交,它为 POST 文件请求启用了文件选择器。

我知道以前有人问过类似的问题,但没有一个与 OAS 版本 3 相关。

我的代码片段如下:

Upload a file
Returns ID of uploaded file
---

tags:
- name: "attachments"
schemes:
- "http"

consumes:
- application/octet-stream
produces:
- application/json

requestBody:
  content:
    application/octet-stream:
      schema:
        type: file
        format: binary

responses:
  200:
    ... etc

我在 Flasgger UI 中只得到一个空块输入。即使 Swagger-UI 支持,Flasgger 是否可能不支持它(我认为它是建立在它之上的)?还是语法错误?

4

1 回答 1

2

您正在混合使用 OpenAPI 2.0 和 3.0 语法。在 OAS3 中,文件被描述为二进制字符串,即type: string与非type: file. 此外,consumesOAS3中不使用produces和关键字。schemes

尝试以下操作:

Upload a file
Returns ID of uploaded file
---

tags:
- attachments

requestBody:
  content:
    application/octet-stream:
      schema:
        type: string   # <-------
        format: binary

responses:
  '200':
    description: OK
    content:
      application/json:
        schema:
          # ... etc

请注意,OAS3 文件上传需要 Swager UI 3.16.0+,但 Flassger 0.9.1 与 UI 3.14.2 捆绑在一起,似乎无法更新捆绑的 Swagger UI。这种可能性将在下一次更新,Flassger 0.9.2 中添加:

https://github.com/rochacbruno/flasgger#externally-loading-swagger-ui-and-jquery-jscss

所以你需要等待Flassger 0.9.2。


我还建议您使用Swagger Editor检查生成的 OpenAPI 文件是否存在语法错误,因为语法错误可能会导致不正确的解析/渲染。此答案解释了如何从 Swagger UI 导出 OpenAPI 文件,以便您可以在其他地方使用它。

于 2018-10-09T10:14:11.387 回答