在Flasgger中,我正在尝试为接受上载文件的路线创建文档。但是,尽管坚持使用the specification,但我无法在Flasgger UI中显示文件选择器。
我正在使用最新的(截至今天)运行OpenAPI 3规范的flasgger==0.9.1
(如"openapi": '3.0.0'
),并且在Swagger-UI中看到了this commit,该文件启用了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是否也可能不支持它(我认为它是基于它构建的)?还是语法错误?
答案 0 :(得分:1)
您正在混合使用OpenAPI 2.0和3.0语法。在OAS3中,文件被描述为二进制字符串,即type: string
而不是type: file
。另外,在OAS3中不使用consumes
,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文件是否存在语法错误,因为语法错误可能会导致不正确的解析/渲染。 This answer解释了如何从Swagger UI导出OpenAPI文件,以便您可以在其他地方使用它。