mapforce 中 rest 调用通过 http client 函数实现,需手动配置 url、方法、headers 和 body,返回原始字符串,必须接 parse json/xml 并用真实响应校准 schema 才能正确映射字段。

MapForce 中 REST API 数据源不叫“连接”,而是通过 HTTP Client 函数构造请求
MapForce 本身没有“数据库连接”式的 REST 连接向导。它把 REST 调用当作一个函数调用处理,核心是 HTTP Client 函数(位于 “Built-in > Network” 分类下)。你得手动配置 URL、方法、头、Body,再解析返回的 JSON/XML —— 不是点几下就能连上,而是像写微型客户端一样组装流程。
-
HTTP Client返回的是原始响应(xs:string),不是结构化数据,必须接Parse JSON或Parse XML才能映射字段 - URL 中的动态参数(如
/users/{id})需用变量拼接,不能靠占位符自动替换 - 认证(Bearer Token、Basic Auth)要手动加到
Headers输入框里,格式为Authorization: Bearer xxx或Authorization: Basic base64string - POST 请求的 Body 必须是合法 JSON 字符串(用
Serialize JSON函数生成),不能直接拖字段进去
如何配置 HTTP Client 的 Headers 和 Body(以 POST + JSON 为例)
Headers 和 Body 都是 xs:string 类型输入,但内容格式敏感。填错会导致 400/401 错误,且 MapForce 不报具体原因,只返回空响应或错误码。
- Headers 输入框中填完整键值对,每行一个,例如:
Content-Type: application/jsonAuthorization: Bearer eyJhbGciOi... - Body 输入必须是纯 JSON 字符串:如果要发
{"name":"Alice","age":30},就得先用Serialize JSON把结构化数据转成字符串,不能直接连一个 record 元素过去 - GET 请求的查询参数要手拼进 URL,比如
https://api.example.com/search?q=<code>$searchTerm&limit=10,其中$searchTerm是映射过来的变量
HTTP Client( URL = "https://jsonplaceholder.typicode.com/posts/1", Method = "GET", Headers = "Accept: application/json", Body = "" )
解析 JSON 响应时,常见字段映射失败的原因
即使 HTTP Client 返回了 200 状态和有效 JSON,Parse JSON 后仍可能无法拖出字段——根本原因是 JSON Schema 推断不准,尤其遇到空数组、可选字段或嵌套过深时。
- 首次使用前,右键
Parse JSON→ “Load Sample from URL” 或粘贴真实响应体,强制更新内部 schema - 如果响应是数组(如
[{"id":1,"title":"a"},{"id":2,"title":"b"}]),Parse JSON输出是array of object,需用For Each循环展开才能取单个id或title - 字段名含短横线(如
user-id)或数字开头(如2023_total),MapForce 会自动转成下划线(user_id、_2023_total),映射时得按转换后名字找 - 空值(
null)字段默认不生成输出节点,需在Parse JSON属性里勾选 “Include null values” 才保留占位
调试技巧:怎么确认请求发出去了、返回什么
MapForce 没有内置网络日志,靠“看输出+试错”效率低。最可靠的方式是把 HTTP Client 的输出直接连到一个 Output 组件,运行时查看原始响应;或者用外部工具交叉验证。
- 把
HTTP Client的Response输出连到Output(右键 → “Add Output”),运行后看弹窗里是不是预期的 JSON/XML - 如果返回空或 HTML(比如登录页),说明 URL、认证或重定向出了问题 —— MapForce 默认不跟随重定向,需检查状态码是否为 302
- 用 Postman 或 curl 先跑通请求,复制完整的 URL、Headers、Body,再照搬到 MapForce,避免环境差异干扰
- 注意时区与编码:中文参数若乱码,尝试在 URL 中用
encode-for-uri($keyword)函数编码










