【问题标题】:Allow to download file from my REST endpoint in Golang using 3rd party API允许使用 3rd 方 API 从我在 Golang 中的 REST 端点下载文件
【发布时间】:2019-02-21 09:41:47
【问题描述】:

这听起来可能很奇怪,但我正在开发一个端点(REST),允许用户下载文件(可能是 zip)。 所以我正在使用第 3 方 API 来获取文件,然后我必须将其传递给最终用户。

我无法公开第 3 方 API。 我对 Golang 和 REST API 也很陌生。我可以探索这个概念,但任何人都有任何想法,允许从实际上来自第三方的 REST 端点下载文件的最佳方式是什么。

我知道这是一种非常糟糕的提问方式,但我不知道我应该探索什么或阅读任何给我这个想法的博客。

我不是在寻找代码,而是更多的想法。

【问题讨论】:

    标签: rest api go download zip


    【解决方案1】:

    在@Seaskyways 上面解释的内容中添加代码 sn-p。

    return middleware.ResponderFunc(func(w http.ResponseWriter, r runtime.Producer) {
            fn := filepath.Base(filePath)
            w.Header().Set("Content-Type", "application/octet-stream")
            w.Header().Set("Content-Disposition", fmt.Sprintf("attachment; filename=%q", fn))
            io.Copy(w, file)
            defer os.Remove(filePath)
            file.Close()
        })
    

    希望对您有所帮助。

    【讨论】:

      【解决方案2】:

      Golang 具有io.Reader 的抽象,它封装了几乎所有可以以二进制格式读取的内容。
      通常,如果您有一个来自 3rd 方 API 的文件,您至少有一种方法可以从该文件构建 io.Reader,无论是 HTTP 请求、gRPC 还是本地文件。

      如果您有io.Reader,那么请求方肯定会提供io.Writer 以允许您编写他们请求的响应。在此之后,您所要做的就是桥接io.Readerio.Writer,以使用io.Copyio.CopyN 将文件从第3 方API 即时复制到请求方。

      【讨论】:

      • 拜托,你能举个例子吗?
      【解决方案3】:

      您可以在 gin.Context.FileAttachment(path,filename) 的帮助下轻松完成

      go to this respo.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-18
        • 2019-01-08
        相关资源
        最近更新 更多