API 返回数据处理扩展
通过 Filter_Plugin_API_Result_Data 接口,可以在 Z-BlogPHP 的 API 模块函数返回数据后(ApiDispatch 调用 ApiResultData 时)、响应组装之前对返回数据做统一处理,适用于为返回结果追加公共字段、按模块修改数据等场景。
接口信息
| 接口 | 参数 | 说明 |
|---|---|---|
Filter_Plugin_API_Result_Data | &$result, $mod, $act | 处理返回数据,$result 为模块函数返回的数组,$mod、$act 为当前模块名与动作名 |
完整案例
下例为所有成功返回的 API 响应数据追加服务端时间戳:
php
<?php
RegisterPlugin("demoAPP", "ActivePlugin_demoAPP");
function ActivePlugin_demoAPP()
{
Add_Filter_Plugin('Filter_Plugin_API_Result_Data', 'demoAPP_API_Result_Data');
}
function demoAPP_API_Result_Data(&$result, $mod, $act)
{
// $result 通常包含 data、error、code、message,也可能包含 raw、json 键
if (isset($result['data']) && is_array($result['data'])) {
$result['data']['demoapp_server_time'] = time();
}
}注意事项
- 参数
$result需在回调签名中使用引用传递&$result,由于系统函数ApiResultData本身按引用接收该数组,回调内的修改会直接改变后续响应内容; - 该接口在
ApiDispatch()中模块函数执行完毕后、ApiResponse()或ApiResponseRaw()调用之前触发,是模块数据进入响应流程前最后一个可统一修改的环节; $result的结构由模块函数决定:常规结构为array('data' => ..., 'error' => ..., 'code' => ..., 'message' => ...),返回原始内容时则含raw或json键,处理前应先判断键是否存在;$mod、$act为当前请求的模块名与动作名(均已小写),可用于只对特定端点做处理。