Почтальон sendRequest использовать авторизацию из коллекции
Я могу отправить запрос в сценарии предварительного запроса Почтальона, как показано ниже. То, что я хотел бы сделать, это использовать ту же аутентификацию, которая установлена в Коллекции, чтобы в случае изменения Коллекции мой sendRequest следовал комплекту.
pm.sendRequest({
url: 'http://some_url',
method: 'GET',
header: {
'content-type': 'application/json',
'authorization': 'Basic ' + auth
},
}, function (err, res) {
// do something
});
Причина, по которой я хочу это сделать, заключается в том, что я хочу поделиться коллекцией с партнерами и клиентами, и каждый из них может использовать свой тип аутентификации. На данный момент я настроил свою коллекцию для использования базовой аутентификации и использовал переменные для имени пользователя и пароля. Если, например, партнер переключает коллекцию на использование OAuth, ему также необходимо обновить все мои сценарии перед запросом, чтобы использовать OAuth.
Если pm.sendRequest() смог унаследовать аутентификацию так же, как и каждый запрос в коллекции, тогда партнер мог бы внести изменения в одном месте.
2 ответа
Это будет работать, если вы выполняете sendRequest после запроса, который также имеет заголовок авторизации:
pm.sendRequest({
url: 'http://some_url',
method: 'GET',
header: {
'content-type': 'application/json',
'authorization': request.headers["authorization"]
},
}, function (err, res) {
// do something
});
Информацию об объекте запроса можно найти здесь.
ОБНОВЛЯТЬ:
Я не знаю, не слишком ли поздно, но у меня это сработало, создав такой запрос:
const host = pm.environment.get("host");
const path = "/oauth/token";
pm.sendRequest({
url: host + path,
method: 'POST',
auth: {
type: "basic",
basic: {
username: 'BASIC_USER',
password: 'BASIC_PASS'
}
},
headers: {
Accept: "*/*"
},
body: {
mode: 'urlencoded',
urlencoded: [
{ key: "grant_type", value: "password" },
{ key: "username", value: "VALUE1" },
{ key: "password", value: "VALUE2" }
]
}
}, function (err, res) {
if (err === null) {
pm.environment.set("token", res.json()["access_token"]);
}
});
Надеюсь, это может быть кому-то полезно.