用 PHP 调用 YesApi 接口的完整教程:从安装、签名算法、发起请求到错误处理,附可运行示例代码。
YesApi Pro 私有部署后,用同样的 SDK 方式接入你自建的接口——源码交付、当天上线。
YesApi 官方提供 PHP SDK(YesApiPHPSDK.php),无需 Composer,直接引入即可;仅依赖 PHP 的 curl 扩展。
# 确认已开启 curl 扩展
php -m | grep curl
# 将 YesApiPHPSDK.php 放入项目,直接 require 引入YesApi 接口用签名(sign)防篡改,算法固定:把参数按 key 升序排序 → 拼接所有参数值(不含 key)→ 末尾追加 app_secret → MD5 → 转大写。各语言实现一致,务必与服务端保持相同规则。
<?php
// 签名:ksort 参数 → 拼接所有 value → 追加 app_secret → md5 → 大写
function yesapiSign(array $params, string $appSecret): string {
ksort($params);
$str = '';
foreach ($params as $v) { $str .= $v; }
return strtoupper(md5($str . $appSecret));
}请求方式为 POST,地址为 HOST/?s=服务名,参数用 form 表单编码,需带上 s、app_key 与计算好的 sign。下面是 PHP 的完整可运行示例:
<?php
require 'YesApiPHPSDK.php';
// 方式一:用官方 SDK(推荐)
$rs = YesApiPHPSDK::request('App.Table.FreeQuery', [
'model_name' => 'news',
'page' => 1,
'perpage' => 10,
]);
print_r($rs);
// 方式二:手写请求(理解底层)
$host = 'http://your-domain.yesapi.cn/';
$appKey = 'YOUR_APP_KEY';
$appSecret = 'YOUR_APP_SECRET';
$service = 'App.Table.FreeQuery';
$params = ['model_name' => 'news', 'page' => 1, 'perpage' => 10];
$params['s'] = $service;
$params['app_key'] = $appKey;
$params['sign'] = yesapiSign($params, $appSecret);
$ch = curl_init(rtrim($host, '/') . '/?s=' . $service);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
$res = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($res);YesApi 统一返回 JSON:ret 为状态码(200 成功),data 为业务数据,msg 为错误信息。务必判断 ret 再取数据:
<?php
// 统一返回结构:ret=200 成功;data 为业务数据;msg 为错误信息
if (!empty($res) && $res['ret'] == 200) {
$data = $res['data'];
// 处理业务数据
} else {
$msg = $res['msg'] ?? '请求失败或超时';
error_log('YesApi error: ' . $msg);
}99% 是签名规则不一致:确认①参数按 key 升序排序 ②只拼接「值」不拼 key ③末尾追加 app_secret ④结果转大写。参数值需与最终发送的一致(含 s、app_key)。
在 YesApi Pro 管理后台创建应用后获得。app_key 用于标识身份,app_secret 用于签名,务必只存服务端。
推荐 POST,参数用 form 表单编码提交到 HOST/?s=服务名。POST 更安全,也避免 URL 长度限制。
一样。私有部署只是把 HOST 换成你自己的域名,签名算法与调用方式完全一致。Java 旗舰版 ¥33,800 起、PHP 标准版 ¥15,899 起。