客户端初始化
使用环境变量
不要把配置写进源码:使用单例客户端
只创建一个客户端实例,并在整个应用中复用:错误处理
始终处理错误
把 SDK 调用包在 try/catch 中,并针对具体错误类型分别处理。下面给出的是最起码值得区分的几类;完整版本见 错误处理。检查是否可重试
不要盲目重试。每个错误都提供isRetryable() / is_retryable(),其中已经编码了哪些失败在第二次尝试时可能成功 —— 请使用它,而不要自己去匹配状态码。
完整的异常层级结构、按状态码划分的可重试性表格,以及现成的指数退避封装,见 错误处理。
异步模式
TypeScript:并行请求
对互不依赖的请求使用Promise.all:
Promise.allSettled:
Python:串行执行并从错误中恢复
金额处理
调用 API 时一律使用原始单位
API 使用原始(最小单位)金额。发送前请先转换展示金额:多资产应用请使用 PrecisionHandler
处理多种资产时,使用PrecisionHandler 避免精度错误:
节点操作
使用 RLN 前先检查节点
务必确认节点已配置:WebSocket
用完后取消订阅
务必清理 WebSocket 订阅:处理重连
WSClient 会自行以指数退避重连,因此你这边要做的是把状态呈现给用户:收到 disconnected 时显示「正在重连」提示,收到 connected 时重新请求报价,并把 maxReconnectExceeded 当作硬性错误而非短暂抖动来处理。
事件列表与重连配置见 WebSocket。
安全
切勿在客户端代码中暴露 API 密钥
API 密钥只应在服务端使用。浏览器应用请通过你自己的后端代理 API 调用。校验用户输入
发送到 API 之前,务必校验金额和地址:endpoints 列表中(按层给出的 TradingLimits);pair.routes 只告诉你存在哪些 from_layer -> to_layer 组合。