Обрезать и разделить тело ответа JSON с помощью JMeter - PullRequest
0 голосов
/ 21 февраля 2019

Я пытаюсь протестировать REST API с помощью JMeter.Мой руководитель сказал мне провести нагрузочное тестирование каждого API с использованием JMeter.В настоящее время я тестирую запрос Get API и получаю приведенное ниже тело ответа JSON.

"https://api.rewards.com:/lists/v1/listcontainer/1?ts=20190221004021&auth=EngineeringSolutions:ydvMMlY2uxiKG0yuwh1IbVgR2mfqTQaQncTEaMr+Ef0="

Теперь мне нужно передать это тело JSON другому HTTP-запросу и проверитьAPI.

Мои вопросы:

  1. Как обрезать символы двойных кавычек из тела ответа JSON?
  2. Как получить значения ts и auth, используяметод разделения, такой как (ts = 20190221004021 и auth = EngineeringSolutions: ydvMMlY2uxiKG0yuwh1IbVgR2mfqTQaQncTEaMr + Ef0 =)

Я знаю, что могу использовать действия Регулярного выражения Extractor или BeanShell Precessor для всех, но я не знаю, как это делает Precessorкак это сделать. Кто-нибудь может подсказать мне, как я могу обрезать и разделить ответ JSON?

1 Ответ

0 голосов
/ 21 февраля 2019
  1. Вы не обрезаете двойные кавычки, они являются частью синтаксиса JSON.
  2. Существует много способов разбить строку запроса в URL, их 2.

var url = "https://api.rewards.com:/lists/v1/listcontainer/1?ts=20190221004021&auth=EngineeringSolutions:ydvMMlY2uxiKG0yuwh1IbVgR2mfqTQaQncTEaMr+Ef0=";

//method 1: pure js
var queries = url.match(/(.+)\?(.+)/)[2].split("&");
var params  = {};

for (let i=0; i<queries.length; i++){
  var item = queries[i].match(/([0-9A-Za-z]+)=(.+)/);
  params[item[1]] = item[2]
}

console.log(JSON.stringify(params,null,2));

//method 2: new in ES6
var queryStr  = url.match(/(.+)\?(.+)/)[2];
var urlParams = new URLSearchParams(queryStr);
var params    = {};

for (let item of urlParams.entries())
  params[item[0]] = item[1];
  
console.log(JSON.stringify(params,null,2));
...