【问题标题】:How to send json data from browser to REST endpoint (PUT) in gzip form using nodejs?如何使用nodejs以gzip形式将json数据从浏览器发送到REST端点(PUT)?
【发布时间】:2020-02-25 09:47:52
【问题描述】:

我正在使用 node.js 和 express。 我有我的主页,加载后会点击我的 REST 端点(PUT)发送一些 json 数据。我在发送到 REST 端点时没有压缩数据。但是在我的端点我希望它以 gzip 形式存在,这可能吗?如果有怎么办?

注意:我想使用客户端的内容编码。我既不想在客户端也不想在服务器上压缩它。 (甚至不是服务器上的中间件)

【问题讨论】:

  • 您想从客户端使用一些内容编码?或者,您只是想将其压缩后存储在服务器上?
  • 我想使用客户端的内容编码。我不想在服务器上压缩它。
  • 显示到目前为止你做了什么?
  • 一种方法是使用 requestPromise github.com/request/request#requestoptions-callback。请参阅 gzip 选项。如果您认为这对您有帮助,我可以提供更多详细信息
  • @Sohan 如果我的请求数据以 gzip 格式发送到我的端点,这会很有帮助。我正在寻找许多响应数据的方法,但在这里我希望它来自客户端(浏览器)的请求数据REST 端点作为 PUT 请求。

标签: javascript node.js gzip body-parser content-encoding


【解决方案1】:

如果您需要自动压缩/解压缩传入或通过请求的数据,一种使用方式是request-promise节点模块

 import rp = require("request-promise");
 const requestOptions: rp.Options = {
            uri: "my-endpoint",
            gzip: true,
            method: "GET",
            encoding: "UTF-8",
            headers: {
                Accept: "*/*",
                Authorization: `xxx--token`
            }
        };
 rp(requestOptions)
            .then((response: any) =>
            { // ..your logic to process the response.. }

gzip - 如果为 true,则添加 Accept-Encoding 标头以从服务器请求压缩内容编码(如果尚不存在)并在响应中解码支持的内容编码。注意:响应内容的自动解码是对请求返回的主体数据(通过请求流和传递给回调函数)进行的,而不是对未修改的http的响应流(可从响应事件中获得)进行自动解码.IncomingMessage 对象,可能包含压缩数据

request-promise-options

【讨论】:

    【解决方案2】:

    您可以在快递服务器中添加middleware。到达您的端点的任何请求都将通过此中间件,在您的中间件中,您可以压缩数据,压缩后的数据将转发到您的端点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-03
      • 1970-01-01
      • 1970-01-01
      • 2012-09-30
      • 1970-01-01
      • 2021-10-07
      • 2020-02-28
      相关资源
      最近更新 更多