用于下载 zip 文件的 swagger 规范的正确媒体类型

Correct media type for swagger spec for downloading zip file

我正在创建一个允许下载 zip 文件的 api,因此为此我正在寻找正确的媒体类型以发送此 zip 文件作为 swagger“2.0”规范中的响应。

我当前的 api 规范如下所示

/config:
  get:
    produces:
      - application/zip
    responses:
        200: # OK
          description: All config files
          schema:
            type: string
            format: binary

我已经用“go-swagger”编译了这个规范并为此实现了后端,但是当尝试调用它时 API 我得到了这个错误

http: panic serving 127.0.0.1:20366: applicationZip producer has not yet been implemented

在 swagger 的文档中我没有看到这种媒体类型

Official swagger media types

那么如果我们想提供 API 来下载 zip 文件,正确的媒体类型应该是什么。 提前致谢

你需要实现这个。

由于以下生成的代码而发生错误:

func NewSampleAPI(spec *loads.Document) *SampleAPI {
    return &SampleAPI{
    ...
        ApplicationZipProducer: runtime.ProducerFunc(func(w io.Writer, data interface{}) error {
            return errors.NotImplemented("applicationZip producer has not yet been implemented")
        }),

所以在调用NewSampleAPI之后,你应该设置ApplicationZipProducer:

api := operations.NewSampleAPI(swaggerSpec)
api.ApplicationZipProducer = func(w io.Writer, data interface{}) error {
    ...
}

您应该使用“application/octet-stream”来实现 api 将文件作为附件下载,并且由于它的 Producer 已经默认实现,所以您不会遇到这个问题。