<?php

//简单形式

header('Content-Type:text/html;charset=utf-8'); //避免输出乱码

$output = array();

$a = @$_GET['a'] ? $_GET['a'] : '';

$uid = @$_GET['uid'] ? $_GET['uid'] : 0;

if (empty($a)) {

$output = array('data'=>NULL, 'info'=>'坑爹啊!', 'code'=>-201);

exit(json_encode($output));

}

//

//走接口

if ($a == 'get_users') {

//检查用户

if ($uid == 0) {

$output = array('data'=>NULL, 'info'=>'uid是空的', 'code'=>-401);

exit(json_encode($output));

}

//假设 $mysql 是数据库

$mysql = array(

10001 => array(

'uid'=>10001,

'vip'=>5,

'nickname' => 'Shine X',

'email'=>'979137@qq.com',

'qq'=>979137,

'gold'=>1500,

'powerplay'=> array('2xp'=>12,'gem'=>12,'bingo'=>5,'keys'=>5,'chest'=>8),

'gems'=> array('red'=>13,'green'=>3,'blue'=>8,'yellow'=>17),

'ctime'=>1376523234,

'lastLogin'=>1377123144,

'level'=>19,

'exp'=>16758,

),

10002 => array(

'uid'=>10002,

'vip'=>50,

'nickname' => 'elva',

'email'=>'elva@ezhi.net',

'qq'=>NULL,

'gold'=>14320,

'powerplay'=> array('2xp'=>1,'gem'=>120,'bingo'=>51,'keys'=>5,'chest'=>8),

'gems'=> array('red'=>13,'green'=>3,'blue'=>8,'yellow'=>17),

'ctime'=>1376523234,

'lastLogin'=>1377123144,

'level'=>112,

'exp'=>167588,

),

10003 => array(

'uid' => 10003,

'vip' => 5,

'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://localhost:63342/HelloPHP/API.php?a=get_users&uid=10001

//返回结果

{

"data": {

"userInfo": {

"uid": 10001,

"vip": 5,

"nickname": "Shine X",

"email": "979137@qq.com",

"qq": 979137,

"gold": 1500,

"powerplay": {

"2xp": 12,

"gem": 12,

"bingo": 5,

"keys": 5,

"chest": 8

},

"gems": {

"red": 13,

"green": 3,

"blue": 8,

"yellow": 17

},

"ctime": 1376523234,

"lastLogin": 1377123144,

"level": 19,

"exp": 16758

},

"isLogin": true,

"unread": 4,

"untask": 3

},

"info": "Here is the message which, commonly used in popup window",

"code": 200

}

//例子二:

//开始GET接口

//我们的空项目在首次运行后,会自动生成 index.php 这个文件,我们删除里面的内容,然后修改如下:?

$data = array(

'tid' => 100,

'name' => '标哥的技术博客',

'site' => 'www.huangyibiao.com');

$response = array(

'code'  => 200,

'message' => 'success for request',

'data'  => $data,

);

echojson_encode($response);

//我们这里的结构是日常App开发中最常见的返回数据结构了吧?通常都是状态码、状态信息和客户端业务数据。

//PHP其实也好给力,声明数组后,通过 json_encode 函数就可以输出json格式数据了!

//PHP POST接口

//假设我们要求传参数type过来,而且要求是数值型,用于返回不同的数据,当我们做接口测试时,就可以通过这么来干,就不需要等后台给接口了!

//

$type = $_POST['type'];

$data = '';

if (isset($type) && is_numeric($type) && $type >= 0) {

if ($type == 1) {

$data = array(

'type' => $type,

'name' => '标哥的技术博客',

'site' => 'www.huangyibiao.com');

} else if ($type == 2) {

$data = array(

'type' => $type,

'name' => '公众号:标哥的技术博客',

'site' => 'weixin search: biaogedejishuboke');

}

$response = array(

'code'  => 200,

'message' => 'success for request',

'data'  => $data,

);

echojson_encode($response);

return;

}

$response = array(

'code'  => 999,

'message' => 'argument error for request',

'data'  => $data,

);

echojson_encode($response);

//本篇就到此为止吧,相信大家若想学习它,一定会认真去操作一遍的!

php api 接口的更多相关文章

  1. 干货来袭-整套完整安全的API接口解决方案

    在各种手机APP泛滥的现在,背后都有同样泛滥的API接口在支撑,其中鱼龙混杂,直接裸奔的WEB API大量存在,安全性令人堪优 在以前WEB API概念没有很普及的时候,都采用自已定义的接口和结构,对 ...

  2. 12306官方火车票Api接口

    2017,现在已进入春运期间,真的是一票难求,深有体会.各种购票抢票软件应运而生,也有购买加速包提高抢票几率,可以理解为变相的黄牛.对于技术人员,虽然写一个抢票软件还是比较难的,但是还是简单看看123 ...

  3. 快递Api接口 & 微信公众号开发流程

    之前的文章,已经分析过快递Api接口可能被使用的需求及场景:今天呢,简单给大家介绍一下微信公众号中怎么来使用快递Api接口,来完成我们的需求和业务场景. 开发语言:Nodejs,其中用到了Neo4j图 ...

  4. web api接口同步和异步的问题

    一般来说,如果一个api 接口带上Task和 async 一般就算得上是异步api接口了. 如果我想使用异步api接口,一般的动机是我在我的方法里面可能使用Task.Run 进行异步的去处理一个耗时的 ...

  5. HTTP API接口安全设计

    HTTP API接口安全设计 API接口调用方式 HTTP + 请求签名机制   HTTP + 参数签名机制 HTTPS + 访问令牌机制 有没有更好的方案? OAuth授权机制 OAuth2.0服务 ...

  6. Postman - 功能强大的 API 接口请求调试和管理工具

    Postman 是一款功能强大的的 Chrome 应用,可以便捷的调试接口.前端开发人员在开发或者调试 Web 程序的时候是需要一些方法来跟踪网页请求的,用户可以使用一些网络的监视工具比如著名的 Fi ...

  7. H3 BPM引擎API接口

    引擎API接口通过 Engine 对象进行访问,这个是唯一入口. 示例1:获取组织机构对象 this.Engine.Organization.GetUnit("组织ID"); 示例 ...

  8. 移动端API接口优化的术和结果

    最近一直在忙工作的事情,所以文章写得有些少. 有3-5篇文章都是写到一半然后被别的事情给打断了,所以,我得找个时间好好补补. 最近一直在关注移动端接口API的可用性问题,在移动时代这个做这个优化能产生 ...

  9. Yii2 基于RESTful架构的 advanced版API接口开发 配置、实现、测试 (转)

    环境配置: 开启服务器伪静态 本处以apache为例,查看apache的conf目录下httpd.conf,找到下面的代码 LoadModule rewrite_module modules/mod_ ...

  10. ASP.NET获取百度地图提供的API接口里面的JSON

    思路:开始是想直接在前台获取,但是跨域访问还是有点难度,而且格式必须是josnp格式的,最后嫌麻烦,不得已放弃. 我做的ASP.NET  而这个有自带的解析类,直接引用就行了 先在后台获取到JOSN: ...

随机推荐

  1. Mybatis之基于XML的调用存储过程与手动回滚事务

    一.调用存储过程 一.返回单个值 1.存储过程准备 这里先创建一个存储过程,传入参数为age,传出参数为count.然后先测试一下是否正确. CREATE DEFINER=`root`@`localh ...

  2. C++ 重载运算符简单举例

    我们可以重定义或重载大部分 C++ 内置的运算符.这样,就能使用自定义类型的运算符. 重载的运算符是带有特殊名称的函数,函数名是由关键字 operator 和其后要重载的运算符符号构成的.与其他函数一 ...

  3. SQL Server 2008 management studio 无法连接到(local)解决方法

    背景:安装VS2010之后,自带的 SQL Server 2008 Express 不具备management studio,于是下载了SQL Server 2008 Express  版本并全新安装 ...

  4. c#:HttpClient加标头

    using (var client = new HttpClient()) { string requestUrl = string.Format("{0}{1}", ConstD ...

  5. Spark知识点小结

    函数在driver端定义.在executor端被调用执行

  6. Nginx学习笔记(一)---Linux下安装Nginx

    1.Nginx介绍 (来自百度,相当之抽象,主要看后面看实例) 2.准备工作 2.1 Nginx安装 官方网站:http://nginx.org/ 2.2.Linux安装 安装工程可参考博客https ...

  7. thinkphp去掉url中的.html后缀

  8. 洛谷P3193 [HNOI2008]GT考试(dp 矩阵乘法)

    题意 题目链接 Sol 设\(f[i][j]\)表示枚举到位置串的第i位,当前与未知串的第j位匹配,那么我们只要保证在转移的时候永远不会匹配即可 预处理出已知串的每个位置加上某个字符后能转移到的位置, ...

  9. openlayer3之高级标注实现

    首先看实现效果: 实现要点: 1)树形标注实现 2)复杂标注样式定义 3)效率优化 1.树形标注实现 树形标注采用字体符号来实现,包括以下几个步骤 1)载入字体 2)设置标注值与字体对照关系 3)设置 ...

  10. Kotlin入门(20)几种常见的对话框

    提醒对话框手机上的App极大地方便了人们的生活,很多业务只需用户拇指一点即可轻松办理,然而这也带来了一定的风险,因为有时候用户并非真的想这么做,只是不小心点了一下而已,如果App不做任何提示的话,继续 ...