如何在Nock Get请求中发送二进制缓冲区?

时间:2019-04-19 22:55:02

标签: javascript smartsheet-api nock

  • Nock版本:^ 10.0.4

下面的请求始终以字符串形式返回response。我需要JSON格式。现在,我无法获得res.data(返回未定义),但是我可以看到res为String。

  • 如何获取响应的JSON格式?

  • 这是我的要求:

    nock('https://api.smartsheet.com/2.0/sheets/')
         .defaultReplyHeaders({
             "accept-encoding":"gzip, deflate",
             "accept": "application/json",
             "content-type": "application/json"
          })
         .get('/')
         .reply(200, {"data" : "test"});
  • 我尝试使用JSON.parse({“ data”:“ test”),它仍然返回String作为响应。
  • 我也尝试过
    const buffer = Buffer.from(JSON.stringify({data: 'test'}));
    const compressed = zlib.gzipSync(buffer);
    nock('https://api.smartsheet.com/2.0/sheets/')
         .defaultReplyHeaders({
             "accept-encoding":"gzip, deflate",
             "accept": "application/json",
             "content-type": "application/json"
          })
         .get('/', compressed)
         .reply(200, () => compressed);

但是我不知道如何在nock中发送二进制缓冲区。

  • 如何在Get请求中发送二进制缓冲区?

  • 请求代码:

        this.smartsheet = SmartsheetClient({
            accessToken: this.config.get('smartsheet.oauth_token'),
        });
        const [getError, sheets] = await this.to(this.smartsheet.sheets.listSheets());
        if (getError) {
            throw new this.Doh('Fail to get sheets', getError);
        }
        return sheets.data;

1 个答案:

答案 0 :(得分:0)

默认情况下,Smartsheet API始终返回JSON。我不熟悉nock库,但是这似乎与如何处理响应有关。您可能想在他们的Github上打开一个问题,以询问是否在这里没有听到。 我确实在您的示例中看到您的网址是https://api.smartsheet.com/2.0/sheet/ Smartsheet API对请求中的名称使用复数形式,因此对于List Sheets请求,应使用https://api.smartsheet.com/2.0/sheets/代替。