Hi guys.. this is my first story on Dev.to, pardon for my bad English, i'll always improve my english skills xD
I always use Postman for testing an API if it's works as expected or not.
But sometimes it's painful when you forgot to refresh Authorization token and get message like 'Expired token' from API response and need to switch between postman tabs to generate new Authorization token and back to current tab for paste new token, not efficient, right ?
So.. i'm start digging to Postman documentation and search about how to create event that fired before request send, and i found Pre-Request Scripts feature on Postman.
Pre-request scripts are snippets of code associated with a collection request that are executed before the request is sent. This is perfect for use-cases like including the timestamp in the request headers or sending a random alphanumeric string in the URL parameters.
Pre-request scripts
Yipeee!!! We can set headers automatically before sending request, FYI
pre-request scripts are written in Javascript and it's not a big deal since it's not hard to write simple http request on Javascript.
Before we start, i will use Postman variables feature to store value on collection scope, so here we go..
Step 1 - Create global variable
We need to 'save' token information so we can use it from anywhere.
Create 2 variables :
- expiryTime
- activeToken I'm create my variable on collection scope Click three dots on your collection
Click Variables tab and fill the form
Step 2 - Create simple pre-request scripts
Open Pre-Request Scripts tabs and write this codes
const getAuthToken = {
url: 'https://localhost:8243/login',
method: 'POST',
header: {
'Content-Type': 'application/json',
},
body: {
mode: 'application/json',
raw: JSON.stringify({
client_id: '<Your client_id>',
client_secret: '<Your client_secret>'
})
}
}
var isTokenExpired = true;
var activeToken = pm.environment.get('activeToken');
var expiryTime = pm.environment.get('expiryTime');
if (!activeToken || !expiryTime) {
console.log('empty active token or expiry date, should generate new one');
} else if (expiryTime <= (new Date()).getTime()) {
console.log('token expired, generate new one');
} else {
isTokenExpired = false;
}
if (isTokenExpired === true) {
pm.sendRequest(getAuthToken, function (err, res) {
if (err === null) {
var response = res.json();
// Save token to activeToken variable
pm.environment.set('activeToken', response.access_token)
// Calculate expiry date and save to expiryTime variable
var expiryDate = new Date();
expiryDate.setSeconds(expiryDate.getSeconds() + responseJson.expires_in);
pm.environment.set('expiryTime', expiryDate.getTime());
console.log('saving token')
}
});
}
A few notes :
- Postman have built in function, on example you'll find function pm.environment.set and pm.environment.get, if you need more information, you can check to official Postman documentation. You can modify body payload to fit your API needs.
Step 3 - Use auto generated token for authorization
After we create pre-request scripts, we need to implement token for whole collection.
Open Authorization tab and fill empty token field with activeToken it means we use variable that previously have been filled with token.
Step 4 - Implement token
In previous step we've done for setting up auto generate token, and this is final step to implement it.
Open your Request under same collection as we setup before and go to Authorization tab, on Type field select Inherit Auth From Parent, congrats you're done!
For now, every request you made, it will fire pre-request scripts. If you want to see where console.log command print the content, it will printed on Postman Console. Click terminal icon on bottom bar Postman
Console form will showed up
I hope it will boost your workflow to be more efficient.
Anyway.. i made Digital Wedding Invitation service, register for free
undangan nikah online
Technology and startup news
Berita Seputar Teknologi, Tutorial dan Informasi Terkini
Top comments (0)