登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-04-16 23:09:32 318浏览 收藏

积累知识,胜过积蓄金银!毕竟在Golang开发的过程中,会遇到各种各样的问题,往往都是一些细节知识点还没有掌握好而导致的,因此基础知识点的积累是很重要的。下面本文《用于下载 zip 文件的 swagger 规范的正确媒体类型》,就带大家讲解一下知识点,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

问题内容

我正在创建一个允许下载 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 的文档中我没有看到这种媒体类型

官方招摇媒体类型

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


解决方案


您应该使用“application/octet-stream”来实现以附件形式下载文件的 api,并且由于其 producer 已默认实现,因此您不会遇到此问题。

您需要来实现这一点。

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

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 {
    ...
}

好了,本文到此结束,带大家了解了《用于下载 zip 文件的 swagger 规范的正确媒体类型》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>