在php中调用接口以及编写接口

在这里openUser.php相当于一个接口 , 其中get_user_list 是一个API(获取用户列表) , 讲求返回的数据类型为JSON格式 。
你只需要在你PHP代码中执行这条链接他就会返回 。
GET方式的直接使用
$file_contents = file_get_content('http://localhost/openUser.php?act=get_user_list&type=json')
POST方式得用下面的(需要开启PHP curl支持) 。
$url = 'http://localhost/openUser.php?act=get_user_list&type=json';
$ch = curl_init ();
【在php中调用接口以及编写接口】curl_setopt ( $ch, CURLOPT_URL, $url );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt ( $ch, CURLOPT_CONNECTTIMEOUT, 10 );
curl_setopt ( $ch, CURLOPT_POST, 1 ); //启用POST提交
$file_contents = curl_exec ( $ch );
curl_close ( $ch );
在php 中编写接口
一、先简单回答两个问题:
1、PHP 可以开发客户端?
答:不可以 , 因为PHP是脚本语言 , 是负责完成 B/S架构 或 C/S架构 的S部分 , 即:服务端的开发 。(别去纠结 GTK、WinBinder)
2、为什么选择 PHP 作为开发服务端的首选?
答:跨平台(可以运行在UNIX、linux、windows、mac OS下)、低消耗(PHP消耗相当少的系统资源)、运行效率高(相对而言)、MySQL的完美搭档 , 本身是免费开源的 , ......
二、如何使用 PHP 开发 API(Application Programming Interface , 应用程序编程接口) 呢?
做过 API 的人应该了解 , 其实开发 API 比开发 WEB 更简洁 , 但可能逻辑更复杂 , 因为 API 其实就是数据输出 , 不用呈现页面 , 所以也就不存在 MVC(API 只有 M 和 C) , 
1、和 WEB 开发一样 , 首先需要一些相关的参数 , 这些参数 , 都会由客户端传过来 , 也许是 GET 也许是 POST , 这个需要开发团队相互之间约定好 , 或者制定统一规范 。
2、有了参数 , 根据应用需求 , 完成数据处理 , 例如:任务进度更新、APP内购、一局游戏结束数据提交等等
3、数据逻辑处理完之后 , 返回客户端所需要用到的相关数据 , 例如:任务状态、内购结果、玩家信息等等
数据怎么返给客户端?
直接输出的形式 , 如:JSON、XML、TEXT 等等 。
4、客户端获取到你返回的数据后 , 在客户端本地和用户进行交互
临时写的一个简单 API 例子:

  1. <?php
  2. $output = array();
  3. $a = @$_GET['a'] ? $_GET['a'] : '';
  4. $uid = @$_GET['uid'] ? $_GET['uid'] : 0;
  5. if (empty($a)) {
  6. $output = array('data'=>NULL, 'info'=>'坑爹啊!', 'code'=>-201);
  7. exit(json_encode($output));
  8. }
  9. //走接口
  10. if ($a == 'get_users') {
  11. //检查用户
  12. if ($uid == 0) {
  13. $output = array('data'=>NULL, 'info'=>'The uid is null!', 'code'=>-401);
  14. exit(json_encode($output));
  15. }
  16. //假设 $mysql 是数据库
  17. $mysql = array(
  18. 10001 => array(
  19. 'uid'=>10001,
  20. 'vip'=>5,
  21. 'nickname' => 'Shine X',
  22. 'email'=>'979137@qq.com',
  23. 'qq'=>979137,
  24. 'gold'=>1500,
  25. 'powerplay'=> array('2xp'=>12,'gem'=>12,'bingo'=>5,'keys'=>5,'chest'=>8),
  26. 'gems'=> array('red'=>13,'green'=>3,'blue'=>8,'yellow'=>17),
  27. 'ctime'=>1376523234,
  28. 'lastLogin'=>1377123144,
  29. 'level'=>19,
  30. 'exp'=>16758,
  31. ),
  32. 10002 => array(
  33. 'uid'=>10002,
  34. 'vip'=>50,
  35. 'nickname' => 'elva',
  36. 'email'=>'elva@ezhi.net',
  37. 'qq'=>NULL,
  38. 'gold'=>14320,
  39. 'powerplay'=> array('2xp'=>1,'gem'=>120,'bingo'=>51,'keys'=>5,'chest'=>8),
  40. 'gems'=> array('red'=>13,'green'=>3,'blue'=>8,'yellow'=>17),
  41. 'ctime'=>1376523234,
  42. 'lastLogin'=>1377123144,
  43. 'level'=>112,
  44. 'exp'=>167588,
  45. ),
  46. 10003 => array(
  47. 'uid' => 10003,
  48. 'vip' => 5,


    推荐阅读