如何在Jmeter中定义正则表达式?

时间:2019-04-24 10:22:41

标签: regex jmeter

我的问题是我需要在Jmeter中定义一个正则表达式,以便在页面中创建DELETE方法。真正的问题是我无法删除带有ID的特定令牌。

我定义了一个正则表达式,它的名字是“ uidprofesor”,它指向令牌。此令牌,当我尝试手动删除它并捕获请求时,在原始响应数据中得到以下代码:

{"headers":
  {"Location":["/api/profesores/5c745065-3155-4ff7-ac65-7699a36f611c"],
              "X-afppApp-alert":["afppApp.profesor.created"],
              "X-afppApp-params":["5c745065-3155-4ff7-ac65-7699a36f611c"]},
              "body":{"id":"5c745065-3155-4ff7-ac65-7699a36f611c",
              "nif":"12345678Q",
              "name":"jmeter_122",
              "firstSurname":"jmeter_122",
              "secondSurname":"",
              "address":"",
              "postalCode":"",
              "telephone":"",
              "mobile":"",
              "email":"",
              "dateInsert":"24/04/2019"
  },
 "statusCode":"CREATED",
 "statusCodeValue":201
}

,我假设“ 5c745065-3155-4ff7-ac65-7699a36f611c”是ID。

如果我想定义“ uidprofesor”来捕获该ID,我应该在常规erxpression中定义什么?

我尝试定义如下正则表达式:

{"headers":"(.+?)"
{"headers":{"Location":"(.+?)"
{"Location":"(.+?)"

但是什么都没有。它显示默认值:NOT_FOUND,并且不会删除所选令牌。

我在这里给您提供一些额外的信息:

regular expression ${uidprofesor} = {"headers":"(.+?)"

在HTTP请求中,路径为:

https://desa1eap7.asturias.es/afpp-back/${uidprofesor}

如果我手动进行删除,请在Google Chrome开发者标签中返回:

Requested URL: https://desa1eap7.asturias.es/afpp-back/api/profesores

如果您需要更多信息,请询问。谢谢。

1 个答案:

答案 0 :(得分:1)

使用jMeter JSON提取器:https://jmeter.apache.org/usermanual/component_reference.html#JSON_Extractor

它使用JsonPath https://goessner.net/articles/JsonPath/

$.headers.Location[0]

在此处https://jsonpath.com/

在线检查