集成
Duaer 里 HTTP Request 的常见问题
Duaer 里 HTTP Request 常见报错的原因和修法:400、404、403、429、连接被拒、JSON 无效和文件上传。
Bad request - please check your parameters
对方返回 400 时,Duaer 的 HTTP Request 显示这条报错。常见原因:
- Query Parameters 里的名称或值不被对方接受。
- 传了数组,但格式和对方要求的不一致。在 Options 里改 Array Format in Query Parameters。
对照对方 API 文档核对参数的写法。
The resource you are requesting could not be found
对方返回 404:URL 写错,或这个接口已经下线。对照对方 API 文档确认路径和版本号。
Forbidden - perhaps check your credentials?
对方返回 403,说明认证通过不了或权限不够。
- 给 API 密钥或账号补上这个操作需要的权限或 scope。
- 用通用凭证时,确认头名称和值的格式符合对方要求。
- 重新生成一把权限足够的密钥,更新到 Duaer 凭证里。
429 - The service is receiving too many requests from you
对方限流了。用 HTTP Request 自带的两种办法放慢请求:
- Options › Batching:Items per Batch 设每批条数,Batch Interval (ms) 设批与批之间的等待。每秒一次就填 1000。
- 节点设置里打开「失败时重试」,设「最大尝试次数」和「重试等待时长(毫秒)」。
Connection refused (ECONNREFUSED)
Duaer 能找到那台主机,但目标端口没有程序在监听。这不是域名解析失败,也不是超时。
自托管 Duaer 跑在 Docker 里时,最常见的原因是容器网络:容器里的 localhost 和 127.0.0.1 指的是 Duaer 容器自己,不是宿主机。
- 目标在宿主机上,Docker Desktop(Mac、Windows):URL 写 http://host.docker.internal:<端口>。
- 目标在宿主机上,Linux:给容器加 --add-host=host.docker.internal:host-gateway,或在 docker-compose.yml 的 extra_hosts 里加同样一行。
- 目标是同一个 Compose 里的另一个容器:用服务名当主机名,例如 http://my-api:5000,端口写容器内部端口。
- 不在 Docker 里也连不上 localhost:改写 http://127.0.0.1:<端口>。localhost 可能先解析成 IPv6 的 ::1,而目标只监听 IPv4。
Duaer 云上的数字组织在 Duaer 的服务器上运行,访问不到你电脑上的服务。本机服务要先通过隧道暴露成公网地址。
The value in the "…" field is not valid JSON
你选择用 JSON 传参数,但引号里的字段内容不是合法 JSON。
- 先用 JSON 校验工具找出缺引号、多余或缺少逗号、括号不配对等问题。
- 用表达式时,把整段 JSON 放进一对 {{ }} 里,例如 {{ { "name": $json.name } }}。
上传的文件名不对
Body Content Type 选 Form-Data 发文件时,Duaer 用二进制数据自带的文件名,Name 只是表单字段名。二进制数据没有文件名时,发出去的是 file。对方按文件名识别上传时,可能报 400「缺少文件」。
在 HTTP Request 之前设好文件名:Convert to File 节点里设 File Name;或者在 Code 节点里写 item.binary.data.fileName = 'index.html'。对方检查类型时,也要把 MIME 类型设对。
发文件时报 415 Unsupported media type
Body Content Type 选 Duaer Binary File 时,整个请求体就是这个文件,没有 multipart 外壳。只收 multipart 的接口会拒绝。改成 multipart:
- Body Content Type 选 Form-Data。
- 加一条 Body Parameters,Type 选 Duaer Binary File。
- Name 填对方文档里的表单字段名。
- Input Data Field Name 填存放文件的二进制属性,例如 data。
常见问题
Duaer 的 HTTP Request 报 429 怎么办?
在 Duaer 的 HTTP Request 里打开 Options › Batching 放慢请求,或在节点设置里打开「失败时重试」并设等待时长。
Duaer 云上的 HTTP Request 能访问我电脑上的 localhost 吗?
不能。Duaer 云上的数字组织在 Duaer 服务器上运行。先用隧道把本机服务暴露成公网地址。
同组
Duaer 的内置集成
Duaer 的内置触发器、操作和凭证。触发器启动数字组织,操作在启动之后执行某一步。
集成Duaer 社区节点的风险
在 Duaer 里安装社区节点前,要清楚代码来自实例管理员信任的来源,并了解权限范围。
集成Duaer 社区节点排障
Duaer 社区节点装不上或跑失败时,先核对版本、权限和节点文档,再查实例日志。
集成在 Duaer 里对应用做自定义 API 调用
当 Duaer 某个应用节点没有你要的接口时,用 HTTP Request,并复用该应用已保存的认证。
集成Duaer 里的集成入口
Duaer 内置触发器、动作与凭证。社区节点是额外包。自定义操作用 HTTP Request 复用已保存的认证。
凭证Duaer 内置凭证目录
按服务列出 Duaer 内置凭证说明。创建流程见凭证总览;节点文档会链到对应服务页。
创建节点为 Duaer 创建自定义节点
内置节点和自定义操作都不够用、而且这一步要反复用时,再为 Duaer 写一个节点包。