在php中调用接口以及编写接口( 二 )

  • 'nickname' => 'Lily',
  • 'email' => 'Lily@ezhi.net',
  • 'qq' => NULL,
  • 'gold' => 1541,
  • 'powerplay'=> array('2xp'=>2,'gem'=>112,'bingo'=>4,'keys'=>7,'chest'=>8),
  • 'gems' => array('red'=>13,'green'=>3,'blue'=>9,'yellow'=>7),
  • 'ctime' => 1376523234,
  • 'lastLogin'=> 1377123144,
  • 'level' => 10,
  • 'exp' => 1758,
  • ),
  • );
  •  
  • $uidArr = array(10001,10002,10003);
  • if (in_array($uid, $uidArr, true)) {
  • $output = array('data' => NULL, 'info'=>'The user does not exist!', 'code' => -402);
  • exit(json_encode($output));
  • }
  • //查询数据库
  • $userInfo = $mysql[$uid];
  •  
  • //输出数据
  • $output = array(
  • 'data' => array(
  • 'userInfo' => $userInfo,
  • 'isLogin' => true,//是否首次登陆
  • 'unread' => 4,//未读消息数量
  • 'untask' => 3,//未完成任务
  • ),
  • 'info' => 'Here is the message which, commonly used in popup window', //消息提示 , 客户端常会用此作为给弹窗信息 。
  • 'code' => 200, //成功与失败的代码 , 一般都是正数或者负数
  • );
  • exit(json_encode($output));
  • } elseif ($a == 'get_games_result') {
  • //...
  • die('您正在调 get_games_result 接口!');
  • } elseif ($a == 'upload_avatars') {
  • //....
  • die('您正在调 upload_avatars 接口!');
  • }
  • 复制代码
    点击测试(对于客户端而言 , 也是直接调用这样的地址):
    http://www.ezhi.net/api/test/index.php
    http://www.ezhi.net/api/test/index.php?a=get_users
    http://www.ezhi.net/api/test/index.php?a=get_users&uid=10001
    http://www.ezhi.net/api/test/index.php?a=get_users&uid=10002
    http://www.ezhi.net/api/test/index.php?a=get_users&uid=10003
    三、实际项目中 , 我们在开发 API 应该注意的几个事项(仅供参考):
    1、单文件实现多接口的形式有很多种 , 例如:if..elseif.. 或 switch 或 动态方法 (也就是TP的这种访问函数体的形式)
    2、对于数据的输出最好用json , json具有相当强大的跨平台性 , 市场上各大主流编程语言都支持json解析 , json正在逐步取代xml , 成为网络数据的通用格式
    3、接口安全 , 一定要增加接口验证 。例如 , 客户端和服务端针对不同接口统一做好加密方式 , 服务端在对于每次接口需要都要进行验证 。以保证防止接口被恶意刷新或黑客恶意调用 , 尤其是大型商业应用 。
    4、对于线上的 API 必须保证所有接口正常且关闭所有的错误信息 => error_reporting(0) , 在输出JSON 时 , 不能有任何其它输出 , 否则 , 客户端将解析数据失败 , 直接 Crash!
    5、开发 API 和 WEB 有一定的区别 , 如果是 WEB 的话 , 可能代码出错了 , 不会导致特别严重的错误 , 也许只是导致数据写入和查询失败 , 也许导致 WEB 的某个部分错位或乱码 。但如果是 API , 直接 Crash!
    6、做接口开发 , 不建议使用框架开发 , 原因概括起来有两点(其实我有点冒风险的 , 本人也是 TPer 一枚 , 毕竟这是TP的官网):
    1)客户端一般对服务端的响应速度有极高要求 , 因此 , 使用最原生态的 PHP 完成接口开发 , 是最高效的 , 假如用到了框架 , 还需要加载各种不需要多余的文件 , 就好比夏天穿了件冬天的衣服 。试想 , 你在玩手机的时候 , 使用一个应用随便一个操作 , 等半天才有动静 , 你受的了吗?
    2)就是上面第4点提到的 , 框架对于WEB开发 , 是件很幸福的事 , 但对于 API 而言 , 你实在不敢想象它会给你出什么岔子!最后你将痛苦不堪~~因为很多框架都是为 WEB 诞生的(我也很期待有一天能看到专门为开发 API 而生的框架或者扩展)
    这个也有人纠结 , 接口效率与稳定性 , 还得看编码的人 , 有的人可能写的还不如框架跑的快 , 也有人觉得用框架没什么问题 , 这里只是建议 , 关键看自己的实际情况 , 同时建议代码上线前压测一下


    推荐阅读