GraphQL/Apollo 应用程序,可从服务器下载文件

use*_*851 6 apollo reactjs graphql

我对 GraphQL 有点陌生,这个问题属于“它不可能这么难。我必须遗漏一些东西。”

我有一个相当标准的 GraphQL/Apollo/React 应用程序,分为客户端和服务器。客户端调用 API 并从服务器获取数据时,一切都运行良好。客户端甚至可以将文件上传到服务器。但是,我现在需要服务器流回保存在磁盘上的文件。就是这样。

这是“我必须遗漏一些东西”的部分。我在文档和 Stackoverflow 上看到的所有内容都是从服务器推回文件并通过 GraphQL 查询作为 Base64 编码的字符串,然后在客户端上执行一些非常 hacky 的操作,通常涉及隐藏的 href 标签和模拟点击。对此我说:“什么???”

严重地。磁盘上有服务器知道如何查找的文件。客户端需要向用户显示一个按钮,用户可以单击该按钮来下载文件。就是这样。所有其他语言的其他框架都有一个简单的方法来做到这一点。有人可以告诉我我在这里缺少的极其简单的事情吗?

谢谢,亚历克斯

Dan*_*den 2

您缺少的是 GraphQL 确实不应该用于此目的。

虽然 GraphQL 本身没有指定序列化响应的特定格式,但事实上的格式是 JSON。在 JSON 响应中获取文件的唯一方法是将其序列化为字符串。

如果您想提供静态内容,您应该设置 Nginx、Apache 或其他基于此构建的 Web 服务器。或者,如果您已经在使用一些现有的 Web 服务器库(例如 Express),它很可能也具有用于提供静态内容的工具。

仅仅因为您有 GraphQL 端点并不一定意味着它应该是您的客户端与后端通信的唯一方式。

  • 很公平。我可能需要另一种文件端点。感谢您的回复,这实际上非常有帮助,因为我仍在学习框架,以便有人说“不,不要这样做”。 (4认同)