如何发送文件以响应 graphql 查询? (从服务器向客户端发送一个 csv 文件)

Posted

技术标签:

【中文标题】如何发送文件以响应 graphql 查询? (从服务器向客户端发送一个 csv 文件)【英文标题】:How to send a file to response a graphql query? (send a csv file from server to client) 【发布时间】:2018-08-06 09:35:44 【问题描述】:

我想发送一个 csv 文件来处理 graphql 查询。 我正在使用 Apollo 服务器和 Apollo 客户端和 Reactjs。 (从服务器向客户端发送一个 csv 文件)

谁能告诉我如何实现它?

【问题讨论】:

澄清一下,您是在尝试发送 CSV 文件作为响应来自服务器的一部分,还是尝试发送 CSV 文件到 服务器? 第一个。将 csv 文件从服务器发送到客户端 有关于这个问题的消息吗? 【参考方案1】:

仅当您喜欢在前端下载文件时才使用 Graphql 响应 JSON 格式 你可以实现另一个应用,比如 express 来上传和下载文件。

【讨论】:

这是误导。 JSON 只是传输格式。请不要告诉别人这些。如果它是 base64 编码或 stringify() ,您可以发送和接收 CSV。只需解析另一端的数据。【参考方案2】:

您没有为此创建 EXPRESS (REST API) 服务器。您可以通过多种方式实现这一目标。

    如果您对文件进行 base64 编码,则可以发送和接收文件。在客户端接收文件,您需要从 JSON 响应中对其进行解码。然后创建一个对象以附加该对象以便下载它。

    您可以生成 csv 服务器端并将 URI 传回文件。这通常是 S3 或其他对象存储的一个很好的用例。

    您可以将 JSON 格式的数据转换为 CSV 客户端。这是一篇关于这个概念的文章。 https://medium.com/@danny.pule/export-json-to-csv-file-using-javascript-a0b7bc5b00d2

如果您有大型数据集,我建议您使用选项 2。如果您无法访问对象存储,那么最好下载 3。

【讨论】:

以上是关于如何发送文件以响应 graphql 查询? (从服务器向客户端发送一个 csv 文件)的主要内容,如果未能解决你的问题,请参考以下文章

中继/ graphql:可为空的响应或捕获查询错误的方法

如何模拟 graphQL/Apollo 查询响应以在 redux 中测试 action-creator?

如何在 GraphQL Relay 中捕获查询的响应

如何解析和编组 GraphQL 对 Java POJO 的响应?

如何在graphql中获取响应中的所有字段而不在查询中传递任何字段名称

如何将 graphQL 查询属性映射到不同的响应属性?