1

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

我当前的 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 的文档中,我没有看到这种媒体类型

官方招摇媒体类型

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

4

2 回答 2

2

你需要实现这一点。

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

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 {
    ...
}
于 2021-02-02T18:18:27.673 回答
1

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

于 2021-02-03T13:59:29.747 回答