You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在CastleMock中处理x-www-form-urlencoded并按请求数据返回响应?

用CastleMock实现基于x-www-form-urlencoded表单参数的动态Mock响应

针对你需要Mock Truora API并根据表单参数返回不同响应的需求,CastleMock有几种可行的实现方式,具体步骤如下:

1. 基于请求匹配规则绑定特定响应

如果是固定的参数组合对应固定响应,可以直接通过请求匹配规则实现:

  • 进入你创建的Truora Mock接口,切换到Request Matching标签页
  • 点击Add Request Match,选择匹配类型为Form Parameter
  • 填写要匹配的表单参数名(比如document_type),设置匹配条件(如等于、包含)和目标值(如CC)
  • 重复上述操作,添加所有需要匹配的表单参数规则
  • 切换到Responses标签页,创建对应参数组合的响应模板(设置状态码、Content-Type、响应体),并将该响应与之前配置的匹配规则关联

这样当请求的表单参数完全匹配规则时,就会返回对应的预设响应。

2. 用Groovy脚本生成动态响应(复杂场景)

如果参数组合较多,或者需要根据参数动态拼接响应内容,推荐使用CastleMock的脚本功能:

  • 在Mock接口的Responses标签页,点击Add Response,选择响应类型为Script
  • 在脚本编辑框中编写Groovy逻辑,通过request.formParameter.get("参数名")获取表单参数值,然后根据参数逻辑生成响应
    示例脚本:
// 获取表单参数
def docType = request.formParameter.get("document_type")
def docNumber = request.formParameter.get("document_number")

// 根据参数生成响应
if (docType == "CC" && docNumber.length() == 10) {
    response.status = 200
    response.contentType = "application/json"
    response.body = """{"status": "success", "result": {"valid": true, "full_name": "Ruben Dario"}}"""
} else if (docType == "CE") {
    response.status = 200
    response.contentType = "application/json"
    response.body = """{"status": "success", "result": {"valid": false, "reason": "Expired document"}}"""
} else {
    response.status = 400
    response.contentType = "application/json"
    response.body = """{"status": "error", "message": "Invalid parameters"}"""
}

保存脚本后,所有指向该Mock接口的请求都会执行这段逻辑,根据表单参数返回动态生成的响应。

3. 验证配置

完成配置后,用curl或API测试工具发送请求验证:

curl -X POST "http://你的CastleMock地址/mock/truora/identity-verification" \
     -H "Content-Type: application/x-www-form-urlencoded" \
     -d "document_type=CC&document_number=1000000000"

检查返回的响应是否符合参数对应的预期结果。

内容的提问来源于stack exchange,提问作者Ruben Dario Guarnizo Martinez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 16:24:59