这个OpenAPI/Swagger规范是什么意思?

3

涉及规格:

openapi: '3.0.2'
info:
  title: Video Storage Server API
  version: '1.0'
servers:
  - url: http://localhost:8080
paths:
  /files/{fileid}:
    get:
      description: Download a video file by fileid. 
      parameters:
        - in: path
          name: fileid
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          headers:
            Content-Disposition:
              schema:
                type: string
          content:
            video/mp4:  # foo.mp4
              schema: 
                type: string
                format: binary
            video/mpeg: # bar.mpg 
              schema:
                type: string
                format: binary

我了解我需要让我的服务器响应一个带有文件ID的GET请求。 服务器存储视频。
从服务器返回的响应应该像用户可以在浏览器/Postman中播放的视频一样,还是应该是视频的字节数组?
即,响应应该是: Possible result 1 还是 Possible result 2 此外,“content#video/mp4” /“content#video/mpeg”是什么意思? 我需要将响应中的“content-type”设置为其中之一吗?
我的“Content-Disposition”应该是什么?

内容的关键是“媒体类型”,例如请参考https://swagger.io/docs/specification/media-types/。 - jonrsharpe
@jonrsharpe,谢谢,所以我应该将我的内容类型设置为这两个键之一? - Ian McGrath
“应该像视频一样,在浏览器/Postman中让用户播放,还是应该是视频的字节数组?”- 到底有什么区别?视频文件和其他大型二进制文件应该仅作为原始二进制响应(或通过适当的应用程序协议,如RTSP或HLS)通过HTTP提供。将多GB的视频文件加载到Base64字符串或JSON字节数组中的想法是噩梦的材料... - Dai
2个回答

1
答案是视频,就像第一个例子中一样,或者更准确地说,是与请求的内容类型相对应的字节流,video/mp4video/mpeg,带有Content-Disposition头。
如果响应是像第二个示例中的JSON块,响应内容类型将为application/json(或等效),并且它将明确列出响应对象模式,即响应中将包含filenamefileType等。

0

OpenAPI规范如下:

  1. 发布一个端点/files/{fileid},其中{fileid}是路径参数。
  2. 在响应中,您提供:
  • 视频的二进制数据在消息正文中
  • Content-Type头之一:
    • video/mp4
    • video/mpeg
  • Content-Disposition头之一:
    • Content-Disposition: inline(如果视频应在浏览器内播放)
    • Content-Disposition: attachment; filename="filename.mp4"(如果视频应下载)

有关Content-Disposition头的更多信息,请参见文档


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接