javascriptnode.jsgraphqlhasuranode.js-got

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


I have some code using GOT querying a graphQL endpoint:

// 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);
    } 

I am getting a response from Hasura {"errors":[{"extensions":{"path":"$","code":"invalid-headers"},"message":"Missing Authorization header in JWT authentication mode"}]}

How do I see what GOT is sending out to the GQL endpoint? FYI, this call works fine in the GQL console and also in Postman.


Solution

  • The got() library has hooks that allow you to see the headers it's about to send. Here's an example that you can run and then insert the same thing into your code:

    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);
    });
    

    You can also get a network analyzer like Wireshark to put on your client computer and watch the actual network traffic.