CodeIgniter对接外部服务主要有XML-RPC和RESTful API两种方式:前者适用于PHP<7.0的遗留系统,后者推荐用于现代服务,需注意路由安全、认证及超时处理。

XML-RPC 接口开发要点
XML-RPC 是较早期的远程调用协议,CodeIgniter 3 内置 xmlrpc 类可快速发起请求或搭建服务端,但有明显限制:
- 仅兼容 PHP < 7.0 —— 因底层使用已废弃的
each()函数,PHP 7+ 会报错,无法直接运行 - 适合对接遗留系统(如老版 WordPress ping 服务、某些 CMS 插件接口)
- 客户端示例中需明确指定服务器地址、方法名和参数数组,结构固定,扩展性弱
- 服务端需手动解析参数、校验凭据、构造 struct 响应,无自动路由或格式协商机制
RESTful API 对接主流方案
当前绝大多数第三方服务(支付、短信、地图、社交平台)均提供 RESTful 接口,推荐使用 CodeIgniter RestServer 库实现:
- 支持 PHP 7.2+,与现代环境兼容,维护活跃(GitHub 持续更新)
- 通过继承
RestController,自动映射 HTTP 方法到对应函数(如users_get()、users_post()) - 内置多格式响应(JSON/XML/CSV)、认证模块(API Key、Basic Auth)、限流与 CORS 支持
- 配置集中化:将 API 地址、密钥等写入
application/config/api.php,避免硬编码
封装可复用的 API 客户端类
不依赖第三方库时,建议在 application/libraries 下自建 Api_client:
- 统一使用 cURL 封装 GET/POST/PUT/DELETE,设置默认超时、Header(如
Content-Type: application/json) - 自动读取配置项(
$this->config->item('api_key')),支持 Token 或签名验证 - 返回结构标准化:
['success' => true, 'data' => [...], 'message' => ''],便于控制器统一处理 - 错误时调用
log_message('error', ...)记录原始响应,方便排查
路由与安全注意事项
无论采用哪种方式,都需关注基础防护:
- REST 路由建议用动词限定(如
$route['api/users']['GET'] = 'api/index';),避免 GET 请求触发修改操作 - 敏感接口(如用户信息、订单提交)必须启用认证,RestServer 提供开箱即用的 API Key 校验机制
- XML-RPC 服务端若必须启用,应限制 IP 访问、关闭调试输出、避免明文传输密码
- 所有外部请求建议加超时(
curl_setopt($ch, CURLOPT_TIMEOUT, 10))并捕获异常,防止阻塞主流程


















