如何使用 node.js GOT http 请求库进行故障排除?

how to troubleshoot using the node.js GOT http request library?

我有一些使用 GOT 查询 graphQL 端点的代码:

// set up params for call to weather cache 
    const queryQL = `
      query weather {
        weather(where: {idLatLong: {_eq: "${latLong}"}}) {
          id
          idLatLong
          updated_at
          lat
          long
          requestedByUserId
          data
          created_at
        }
      }
    `
    const query = {query: queryQL};
    const options = {
      headers: {
        'X-Hasura-Admin-Secret': process.env.HASURA_KEY
      },
      responseType: 'json'
    }

    // see if there's an existing record for the lat long
    try {
      const response = await got.post(process.env.GQL_ENDPOINT, query, options);
      console.log('query weather hasura');
      console.log(response.body);
    } catch(error) {
      console.log(error);
    } 

我收到了 Hasura 的回复 {"errors":[{"extensions":{"path":"$","code":"invalid-headers"},"message":"Missing Authorization header in JWT authentication mode"}]}

如何查看 GOT 发送到 GQL 端点的内容?仅供参考,此调用在 GQL 控制台和 Postman 中运行良好。

got() 库有挂钩,可以让您看到它即将发送的 headers。这是一个示例,您可以 运行 然后将相同的内容插入到您的代码中:

const got = require('got');

got("http://www.google.com", {
    hooks: {
        beforeRequest: [function(options) {
            console.log(options);
        }]
    }
}).then(result => {
    let i = 1;
}).catch(err => {
    console.log(err);
});

您还可以将 Wireshark 之类的网络分析仪安装在您的客户端计算机上,然后观察实际的网络流量。