【问题标题】:SOAP UI - Return two different responses for two different POST Request Payloads for same REST API end pointSOAP UI - 为同一 REST API 端点的两个不同 POST 请求有效负载返回两个不同的响应
【发布时间】:2020-06-19 07:40:59
【问题描述】:

我有一个 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。我该如何解决它。

【问题讨论】:

  • 我已经解决了这个问题 - 我的错误 - 1. yourId="\"yourId\"", 2 id1="\"1\"", 3. id2="\"2\""
  • 嘿@log0 - 你试过替代建议了吗?
  • @WilfredClement 是的。效果很好。
  • 使用我的解决方案,问题是"yourId":"1" 之间应该没有空格。但是您的解决方案可以很好地超越这个限制。
  • @WilfredClement 我需要在这个 api 中提供一个多部分文件附件。我看过这个stackoverflow.com/questions/12467901/… ans 但那太旧了。你能帮我实现吗

标签: groovy soapui


【解决方案1】:

我建议您使用 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" 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-11
    • 1970-01-01
    • 1970-01-01
    • 2017-03-16
    • 1970-01-01
    • 1970-01-01
    • 2016-08-15
    相关资源
    最近更新 更多