【问题标题】:Return file from GraphQL resolve从 GraphQL 解析返回文件
【发布时间】:2019-07-25 18:08:36
【问题描述】:

我目前正在使用当前技术堆栈开发一个应用程序:

后端:

  • 猫鼬

  • 快递

  • 阿波罗

  • GraphQL

前端:

  • Vuejs

  • 阿波罗

  • GraphQL

我已经成功地使用 GraphQL 将文件上传到服务器,我坚持的是如何实现“下载”功能。使用普通的 RESTApi 端点,我可以使用 res.download(filePath) 并且它可以工作。由于我不想使用 REST,如何使用 GraphQL 执行此操作。

或者在这种情况下还有其他标准可以遵循吗?

谢谢!

【问题讨论】:

    标签: node.js file express download graphql


    【解决方案1】:

    最好发送一个散列和临时链接来下载它

    1. 保存文件并在静态服务器上散列名称(以限制其他用户的访问)
    2. 该文件应该是临时文件,应该会在短时间内过期
    3. 发送文件链接以响应 API

    【讨论】:

    • 所以你的意思是,每次用户请求一个文件时,服务器都会将它保存在本地并对其进行哈希处理,同时生成一个临时链接,用户可以在需要时使用它来下载它。这个链接可以存活几个小时,如果有很多用户可以访问它,他们可以下载它,并且在它过期后,每当新用户再次请求它时就会生成一个新链接?
    【解决方案2】:

    GraphQL 使用 JSON 格式,它表示为文本格式,而不是二进制。

    如果您不想使用 REST 下载文件,那么您应该:

    1. 在后端将您的文件内容编码为base64 stringRelated question
    2. 将此字符串作为查询响应的一部分发送。
    3. 将编码的 base64 字符串保存为前端的文件。 Related question

    正确的架构设计是在 GraphQL 响应中添加文件链接并使用浏览器下载/渲染文件。

    【讨论】:

      猜你喜欢
      • 2018-02-13
      • 2017-05-13
      • 1970-01-01
      • 1970-01-01
      • 2017-11-01
      • 2012-06-13
      • 1970-01-01
      • 1970-01-01
      • 2013-10-25
      相关资源
      最近更新 更多