基础
- 接口采用RESTful的形式封装,但切记RESTful只是一种风格。
- 你可能需要了解,如何通过PHP返回JSON数据。请参考这里1,这里2。
- 本文档描述针对UCHOME的移动接口开发,所以,你还需要了解UCHOME的二次开发。请参考这里。
原理
把原有要在页面显示的内容根据移动端需要修改成返回相应的JSON。UCHOME是一个严格遵循MVC的框架。所以在编写移动 端API时,我们仅需要把View部分根据移动端需要转为返回JSON。
通过分析在UCHOME主要产生View的部分有:
-
通过showmessage语句产生
-
通过include template语句产生
为了简化操作,封装两个函数(见function_capi.php,它相当于function_common.php):
-
capi_mkjson是基础函数,用于产生json输出,一般不直接调用
-
capi_showmessage_by_data用于产生规范的json输入。相关输入参数说明:
-
msgkey, 代表UCHOME的消息编码,例如DO_SUCCESS,定义在language文件夹
-
code, 代表操作是否正确返回结果,code=1代表出错, data代表要返回的数据,可以是变量 或是数组。具体例子可以参见capi/source文件夹中任何一个文件
-
源代码如下:
function capi_mkjson($response='', $callback=''){ global $_SGLOBAL; $response = empty($response)?$_SGLOBAL['mresponse']:$response; if ($callback){ header('Cache-Control: no-cache, must-revalidate'); header('Content-Type: text/javascript;charset=utf-8'); echo $callback.'('.json_encode($response).');'; }else{ // application/x-json will make error in iphone, so I use the text/json // instead of the orign mine type header('Cache-Control: no-cache, must-revalidate'); header('Content-Type: text/json;'); echo json_encode($response); } exit(); }
function capi_showmessage_by_data($msgkey, $code=1, $data=array()){ obclean(); //去掉广告 $_SGLOBAL['ad'] = array(); //语言 include_once(S_ROOT.'./language/lang_showmessage.php'); if(isset($_SGLOBAL['msglang'][$msgkey])) { $message = lang_replace($_SGLOBAL['msglang'][$msgkey], $values); } else { $message = $msgkey; } $r = array(); $r['code'] = $code; $r['data'] = $data; $r['msg'] = $message; $r['action'] = $msgkey; capi_mkjson($r, $_REQUEST['callback'] ); }
编写接口
- 根据需要,找到相关UCHOME文件
- 根据UCHOME文件夹结构,复制文件至capi文件夹,例如 源文件 source/space_blog.php, 复制至capi/source/space_blog.php
- 查找替换,把
$_GET
和$_POST
替换成$_REQUEST
- 查找替换,把
showmessage
替换成capi_showmessage_by_data
- 查找替换, 把
submitcheck
替换成capi_submitcheck
- 查找替换,把
mkfeed
替换成capi_mkfeed
- 查找替换,把
avatar
替换成capi_avatar
- 若移动端需要返回实名,请调用
capi_realname($uid)
- 查找替换,把
include template
语句 替换成capi_showmessage_by_data('DO_SUCCESS', 0, result);
。 其中 result代表要返回给移动端的结果集 - 测试, 编写接口文档。 推荐使用POSTMAN进行测试
编码风格
- 修改的函数,在原uchome函数前加capi
- 一般不允许直接修改原uchome函数,通过复制增加函数(放置function_capi.php)