Request chaining with Insomnia
Up until now, we've been able to log in, get an access token, and then use that acces token to access the protected endpoints in our API. However, this workflow is a bit tedious, and we have to copy-paste the access token into every request. Luckily, Insomnia has a feature called request chaining that allows us to simplify this workflow!
How to use request chaining with Insomnia
Instead of passing the JWT in every request, you can access the Headers
section and follow these steps. In the Authorization
field, type Bearer
add a space and then press CTRL + SPACE
to get a contextual menu. Navigate to the Response -> Body Attribute
field and select it, as shown in the screenshot below:
After you've selected it, you'll see an error that looks like this:
If you click on the error, you'll see a modal window:
Inside of this window, you will first need to select a request that you want to get the data from. Click on Select item
inside the Request
field and choose the POST /login
endpoint. After you've done that, go to the Filter
field. In this field, we are telling Insomnia which part of the response we want to get from it. The prompt is started with the dollar sign $
and then we can use the dot to access the attributes of the response. If we only type $
or $.
, we'll get a list of all the attributes of the response:
In our case, we want to get the access_token
attribute from the response, so we type $.access_token
. If there was something else inside the access_token
that you wanted to access like some value for example, you could do $.access_token.value
and so on. After you've added the filter, you can set the Trigger Behavior
. For example, you can set it to When expired
and set time to 300 seconds. This means that the token will be refreshed every 5 minutes. The filled out window should look like this:
You can now press Done
and you'll see that the error is gone and that the Authorization
field is filled out with the Bearer
token:
Since we use multiple protected endpoints, we would need to use the same method to get the access_token
for every request. To tackle this problem, we can use environment variables, as we did before for the url
variable.
To do this, you need to create a new environment variable. Click on the No Environment
button in the top left corner of the Insomnia window and then click on the Manage Environments
button, you will see a base environment that looks like this:
Add a new environment variable called access_token
, and for its value you should follow the same process from above. As a quick reminder, you should press CTRL + SPACE
to get the contextual menu and then select the Response -> Body Attribute
field. Click on the error that will show up and fill out the modal window as we've done before. Make sure to wrap the Response -> Body Attribute
with quotation marks, as shown in the screenshot. When the variable is created, your environment should look like this:
You will now be able to use this environment variable in all of the endpoints by simply writing {{access_token}}
in the field that you want to use it in. Coming back to the first example, you can use the access token in the Authorization
field by writing Bearer {{access_token}}
and this will be the result:
If you try and make the request, you will see that it works just like before, without needing to copy and paste the access token.