#javascript #python #postman #postman-pre-request-script
#javascript #python #postman #postman-pre-request-script
Вопрос:
Я новичок в использовании postman для тестирования api. Я пытаюсь извлечь токен JWT, который я могу сохранить как переменную среды в postman. Я имел в виду этот отличный пост о том, как это сделать: jwt-postman
У меня есть приведенный ниже код python, который я использовал ранее для извлечения токена jwt.
import requests
from requests.auth import HTTPBasicAuth
import json
session=requests.Session()
client_id ="abcdef"
secret="ghijklmnop"
token_auth="https://TEST/token"
hed = {'Content-Type': 'application/x-www-form-urlencoded'}
response = session.post(token_auth,headers =hed ,data = 'grant_type=client_credentials',auth = HTTPBasicAuth(client_id,secret),verify = True)
token = json.loads(response.content)['access_token']
print(token)
Как мне написать ту же функциональность в pm.sendRequest
?
Комментарии:
1. С какой частью использования скрипта и заполнения деталей из этого запроса python у вас возникли проблемы? Это та часть, которую вам может понадобиться использовать gist.github.com/bcnzer /…
Ответ №1:
Я не смог запустить это, но вам нужно будет сделать что-то вроде этого:
const options = {
url: 'https://TEST/token',
method: 'POST',
header: {
"Content-Type": "application/x-www-form-urlencoded"
},
body: {
mode: 'urlencoded',
urlencoded: [
{ key: "client_id", value: "abcdef" },
{ key: "client_secret", value: "ghijklmnop" },
{ key: "grant_type", value: "client_credentials" },
]
}
};
var getToken = true;
if (!pm.environment.get('accessTokenExpiry') ||
!pm.environment.get('currentAccessToken')) {
console.log('Token or expiry date are missing')
} else if (pm.environment.get('accessTokenExpiry') <= (new Date()).getTime()) {
console.log('Token is expired')
} else {
getToken = false;
console.log('Token and expiry date are all good');
}
if (getToken === true) {
pm.sendRequest(options, function (err, res) {
console.log(err ? err : res.json());
if (err === null) {
console.log('Saving the token and expiry date')
var responseJson = res.json();
pm.environment.set('currentAccessToken', responseJson.access_token)
var expiryDate = new Date();
expiryDate.setSeconds(expiryDate.getSeconds() responseJson.expires_in);
pm.environment.set('accessTokenExpiry', expiryDate.getTime());
}
});
}