Попытка получить значение сеанса из почтового вызова в Postman: TypeError: postman.getResponseHeader не является функцией

В Postman я пытаюсь получить значение сеанса, возвращенное из почтового вызова, и использовать его в другом вызове get.

Я имею в виду, я звонил через Postman:

curl -X POST \
  https://skyscanner-skyscanner-flight-search-v1.p.rapidapi.com/apiservices/pricing/v1.0 \
  -H 'Accept: */*' \
  -H 'Cache-Control: no-cache' \
  -H 'Connection: keep-alive' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -H 'Host: skyscanner-skyscanner-flight-search-v1.p.rapidapi.com' \
  -H 'Postman-Token: xxxx' \
  -H 'User-Agent: PostmanRuntime/7.15.0' \
  -H 'accept-encoding: gzip, deflate' \
  -H 'cache-control: no-cache' \
  -H 'content-length: 177' \
  -d 'inboundDate=2019-11-25&cabinClass=economy&children=0&infants=0&Country=BR&Currency=BRL&locale=pt-BR&originPlace=GRU-sky&destinationPlace=MCZ-sky&outboundDate=2019-11-19&adults=2'

Он вернулся в заголовке среди других ключей:

Location →http://partners.api.skyscanner.net/apiservices/pricing/uk2/v1.0/b5b906e9-164e-4f1d-b5ce-9085b8a3506d

Теперь я хочу вызвать другой API и должен использовать идентификатор сеанса, возвращенный в предыдущем вызове. Это после /v1.0/. В данном случае это b5b906e9-164e-4f1d-b5ce-9085b8a3506d.

Первые шаги - это получение значения ключа местоположения, но я получаю сообщение об ошибке, упомянутое в заголовке этого вопроса (для получения более подробной информации см. прилагаемое изображение).

Итак, мой прямой вопрос: как я могу получить значение местоположения из другого почтового запроса? Что ж, дополнительный и полезный комментарий будет о том, как проанализировать и получить только идентификатор сеанса, но, естественно, сначала я должен исправить, как получить все значение местоположения.

Это более или менее то, что я пытаюсь:

var sessionKey = JSON.parse(postman.getResponseHeader('Location') );//maybe here applying some regular expression to get only the value after the last "/"
pm.environment.set("sessionkey", postman.getResponseHeader("sessionkey"));

Мой вопрос чем-то близок к В POSTMAN, как мне получить подстроку элемента заголовка ответа?, но здесь автор вопроса может использовать postman.getResponser и, кажется, он не получил окончательного ответа в конце.

Моя версия Postman 7.3.4 (последняя) (я только что обновил ее).

Попытка получить значение сеанса из почтового вызова в Postman: TypeError: postman.getResponseHeader не является функцией

*** отредактировано после первого предложения

Попытка получить значение сеанса из почтового вызова в Postman: TypeError: postman.getResponseHeader не является функцией

*** еще один предварительный провал

var locationHeader = pm.response;
console.info(pm.response); //Print successfully all response including body and header
var jsonData = JSON.parse(pm.response); //exception: There was an error in evaluating the Pre-request Script:  JSONError: Unexpected token u in JSON at position 0
console.info("Location = " + jsonData.Location);

PS. интересно что

pm.request.headers.add({key: 'X-RapidAPI-Host', value: 'skyscanner-skyscanner-flight-search-v1.p.rapida.com'})

корректно работает в моей коллекции Pre-request scripts. Очевидно, что есть pm.request.headers.get, не так ли? Но это не так.

*** отредактировано

Я также добавил этот вопрос в https://community.getpostman.com/t/trying-to-get-a-session-value-from-a-post-call-in-postman-typeerror-postman-getresponseheader-is-not-a-function/ 6804

*** отредактировано

На всякий случай, если кто-то заинтересуется, моя окончательная реализация

var locationHeader = pm.response.headers.get("Location").split('/');

var locationPosition = locationHeader.length-1;

var sessionKey  = locationHeader[locationPosition];

pm.environment.set("sessionkey", sessionKey);

на вкладке «Тест» при вызове POST Create Session

Отвечает ли это на ваш вопрос? Как я могу получить последние символы строки

Henke 02.02.2021 14:20
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
1
1 227
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Добавьте следующий скрипт в тест первого запроса, он установит значение sessionkey, которое вы сможете использовать для последующих вызовов.

var locationHeader = postman.getResponseHeader("Location").split('/');

var sessionKey  = locationHeader[locationHeader.length-1];

pm.environment.set("sessionkey", sessionKey);

Извините, та же ошибка: «Произошла ошибка при оценке сценария предварительного запроса: TypeError: postman.getResponseHeader не является функцией». Я добавлю снимок экрана, но кажется, что версия почтальона, которую я использую, не имеет ни «postman.getResponseHeader», ни «pm.getResponseHeader». Нужно ли мне устанавливать какой-то плагин в Postman, чтобы иметь такую ​​​​функцию? Думаю, нет.

Jim C 26.07.2019 19:10

На самом деле ваш ответ верен на 100%. Я не понял, что вы указываете на вкладку «Тест» вместо вкладки «Сценарий предварительного запроса».

Jim C 26.07.2019 22:07

Другие вопросы по теме