<?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. ASP.NET新增数据返回自增ID

    一.情景引入 项目需求:对于一个数据表(表A)的增.删.改全部要有日志记录,日志表(表B)结构 中需要记录表A的自增ID,这样才能将日志与操作的数据一一对应起来. 对于删和改都好办,获取Model时都 ...

  2. JS通过百度地图API获取当前定位信息

    $(function(){ var latlon=null; //ajax获取用户所在经纬度 $.ajax({ url:"http://api.map.baidu.com/location/ ...

  3. GroupBy分组的运用和linq左连接

    最简单的分组 var conHistoryList = conHistoryData.GroupBy(g => g.personId); 就是conHistoryData是一个IQueryabl ...

  4. 【SQLite】简单的基本使用步骤

    SQLite介绍SQLite is a software library that implements a self-contained, serverless, zero-configuratio ...

  5. C# ACtiveMQ 收发数据

    1.下载ActiveMQ 官方网站下载地址:http://activemq.apache.org/ 2.运行ActiveMQ 解压缩apache-activemq-5.10.0-bin.zip,然后双 ...

  6. css文本溢出隐藏显示省略号(单行+多行)

    文本超出若干行就换行,这个功能几乎每个文本浏览网站都会用到,实现它的办法也有很多,今天简单的介绍一下实现它的方法.  一. 单行文本不换行,并将超出文本隐藏 .box-content{     ove ...

  7. 10折交叉验证(10-fold Cross Validation)与留一法(Leave-One-Out)、分层采样(Stratification)

    10折交叉验证 我们构建一个分类器,输入为运动员的身高.体重,输出为其从事的体育项目-体操.田径或篮球. 一旦构建了分类器,我们就可能有兴趣回答类似下述的问题: . 该分类器的精确率怎么样? . 该分 ...

  8. Docker-compose 编排工具安装

    介绍 Compose 是一个定义和管理多容器的工具,使用Python语言编写,使用Compose配置文件描述多个容器应用的架构, 比如什么镜像,数据卷,网络,映射端口等:然后一条命令管理所有服务,比如 ...

  9. Python 简单分页思路

    一: li = [] for i in range(1000): li.append(i) while True: p = input('input page: ') p = int(p) start ...

  10. 洛谷P3899 [湖南集训]谈笑风生(线段树合并)

    题意 题目链接 Sol 线段树合并板子题,目前我看到两种写法,分别是这样的. 前一种每次需要新建一个节点,空间是\(O(4nlogn)\) 后者不需要新建,空间是\(O(nlogn)\)(面向数据算空 ...