用 Python 调用 YesApi 接口的完整教程:从安装、签名算法、发起请求到错误处理,附可运行示例代码。
YesApi Pro 私有部署后,用同样的 SDK 方式接入你自建的接口——源码交付、当天上线。
Python 用 requests 库发请求、hashlib 做 MD5 签名,几行即可接入。
pip install requestsYesApi 接口用签名(sign)防篡改,算法固定:把参数按 key 升序排序 → 拼接所有参数值(不含 key)→ 末尾追加 app_secret → MD5 → 转大写。各语言实现一致,务必与服务端保持相同规则。
import hashlib
# 签名:按 key 排序 → 拼接所有 value → 追加 app_secret → md5 → 大写
def yesapi_sign(params: dict, app_secret: str) -> str:
s = ''.join(str(params[k]) for k in sorted(params))
return hashlib.md5((s + app_secret).encode('utf-8')).hexdigest().upper()请求方式为 POST,地址为 HOST/?s=服务名,参数用 form 表单编码,需带上 s、app_key 与计算好的 sign。下面是 Python 的完整可运行示例:
import requests
HOST = 'http://your-domain.yesapi.cn/'
APP_KEY = 'YOUR_APP_KEY'
APP_SECRET = 'YOUR_APP_SECRET'
SERVICE = 'App.Table.FreeQuery'
params = {'model_name': 'news', 'page': 1, 'perpage': 10}
params['s'] = SERVICE
params['app_key'] = APP_KEY
params['sign'] = yesapi_sign(params, APP_SECRET)
resp = requests.post(HOST.rstrip('/') + '/?s=' + SERVICE, data=params, timeout=5)
result = resp.json()
print(result)YesApi 统一返回 JSON:ret 为状态码(200 成功),data 为业务数据,msg 为错误信息。务必判断 ret 再取数据:
# 统一返回:ret=200 成功
if result.get('ret') == 200:
data = result['data'] # 业务数据
else:
print('YesApi error:', result.get('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 起。