groovy - SOAP UI - 为相同的 REST API 端点的两个不同的 POST 请求有效负载返回两个不同的响应
问题描述
我有一个 REST POST API 端点 - “abc/def”。
它的请求有效负载(在许多其他字段中)有一个字段“yourId”,可以取 1 或 2,如下所示:
{
"yourId":"1"
}
或者
{
"yourId":"2
}
根据“yourId”的值,我需要返回两个不同的响应 1. YOUR_RESPONSE_1 或 2. YOUR_RESPONSE_2,我为此编写了一个 groovy 脚本,如下所示:
def requestBody = mockRequest.getRequestContent()
log.info "Request body: " + requestBody
yourId="yourId"
id1="1"
id2="2"
if(requestBody.contains(yourId+":"+id1)){
return "YOUR_RESPONSE_1"
}else if(requestBody.contains(yourId+":"+id2)){
return "YOUR_RESPONSE_2"
}else return "ERROR_RESPONSE"
当我从邮递员那里到达终点“localhost:8080/abc/def”时,我得到了 ERROR_RESPONSE。我该如何解决。
解决方案
我建议您使用 JSONSlurper() ,因为这样可以避免使用转义字符并使脚本清晰易读,而且当输入 JSON 很复杂时它也会派上用场
def requestBody = mockRequest.getRequestContent()
def parsedJson = new groovy.json.JsonSlurper().parseText(requestBody)
def ID = parsedJson.yourId
if(ID=="1"){
return "YOUR_RESPONSE_1"
}
else if(ID=="2"){
return "YOUR_RESPONSE_2"
}
else return "ERROR_RESPONSE"
推荐阅读
- sql - 为其他数据库系统创建 DDL 脚本
- json - 发生异常:类型'_InternalLinkedHashMap
' 不是类型 'List 的子类型 ' 在类型转换中 - lc3 - LC-3 分析给定的一段文本
- javascript - Firebase Auth 在尝试解决承诺时给了我一个错误
- c# - 如何在 C# 中将字符串 03/20/2019 10:46 转换为日期时间?
- python - 使用 for 循环中的变量作为函数的输入
- python - Keras 模型预测错误值(精度:0.0000e+00)
- angular - TypeScript 不喜欢嵌套?
- xcode - 为什么使用 cmake 生成 xcode 项目时 CMAKE_OSX_DEPLOYMENT_TARGET 不起作用?
- python - 安装fancyimpute时面临的问题