PHP给APP写api接口怎么写写

PHP编写简单的App接口
作者:标哥
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了使用PHP编写简单的App接口的一些个人的步骤以及经验总结,有需要的小伙伴可以参考下
本篇是笔记尝试写的第一个PHP接口,并在iOS开发中尝试应用测试。今天给大家分享如何自己写接口来测试!
相信很多朋友在开发时遇到过这样的问题:后台什么时候提供接口?怎么才提供一个接口,其他接口什么时候给出来?没有接口我们前端怎么能做得了?
哈哈!大学学完本篇就可以自己搞个接口来返回固定的死数据来测试了!
搭建PHP环境
由于本人使用的电脑是Mac,因此推荐大家使用MAMP PRO这款软件,不过是收费版,相信不想花钱的大家会有办法搞定的!
MAMP PRO这款软件是集成环境软件,已经有apache、mysql、php了,具备运行解析PHP的环境了!
如果不想使用集成环境,可以自己搭建。Mac自带了apache和PHP环境的,只需要稍加配置一下就可以使用了,然后再安装一下mysql就可以了!
大家可以看一下简单版本配置: 这篇文章。
启动服务器
这里是以MAMP PRO软件为例,如何启动服务器。如下图,我们假设服务地址为
,然后将项目目录与这个服务地址关联起来,看图中右下角圈圈部分:
环境启动后,就可以在浏览器中直接输入
运行起来了!
开始GET接口
我们的空项目在首次运行后,会自动生成 index.php 这个文件,我们删除里面的内容,然后修改如下:
$data = array(
'tid' =& 100,
'name' =& '标哥的技术博客',
'site' =& '');
$response = array(
'message' =& 'success for request',
echojson_encode($response);
我们这里的结构是日常App开发中最常见的返回数据结构了吧?通常都是状态码、状态信息和客户端业务数据。
PHP其实也好给力,声明数组后,通过 json_encode 函数就可以输出json格式数据了!
iOS调GET接口
我们有了服务器,也写了接口了,那么客户端如何请求又如何获取数据呢?我们先来看一下最简单的GET请求例子,其中使用了HYBNetworking笔者的这个开源库:
NSString *url = @"/index.php";
[HYBNetworkinggetWithUrl:urlrefreshCache:YESsuccess:^(id response) {
}fail:^(NSError *error) {
我们看一下iOS客户端的响应结果:
从响应结果可以看到,与我们服务器接口所返回的是一致的,看下图在浏览器中访问的效果:
PHP POST接口
假设我们要求传参数type过来,而且要求是数值型,用于返回不同的数据,当我们做接口测试时,就可以通过这么来干,就不需要等后台给接口了!
$type = $_POST['type'];
$data = '';
if (isset($type) && is_numeric($type) && $type &= 0) {
if ($type == 1) {
$data = array(
'type' =& $type,
'name' =& '标哥的技术博客',
'site' =& '');
} else if ($type == 2) {
$data = array(
'type' =& $type,
'name' =& '公众号:标哥的技术博客',
'site' =& 'weixin search: biaogedejishuboke');
$response = array(
'message' =& 'success for request',
echojson_encode($response);
$response = array(
'message' =& 'argument error for request',
echojson_encode($response);
iOS调POST接口
下面是iOS客户端如何调用刚才所写的PHP POST接口,其中使用了HYBNetworking笔者的这个开源库:
NSString *url = @"/index.php";
NSDictionary *params = @{@"type" : @(1)};
[HYBNetworkingpostWithUrl:urlrefreshCache:YESparams:paramssuccess:^(id response) {
}fail:^(NSError *error) {
我们看看效果如下,可看到如愿地接收到了服务器返回的接口数据并解析出来了:
本篇就到此为止吧,相信大家若想学习它,一定会认真去操作一遍的!其实写下本篇文章之前,笔者也从尝试过!
今后会慢慢接触它,慢慢掌握它,一定会让你在工作上更加顺利的!
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具app接口开发之php实现 - Seagull的专栏 - CSDN博客
app接口开发之php实现
*去年的10月我跟朋友一起开发了一个电视盒子的项目,*他负责电视盒子端的界面开发,我负责后台的程序开发,当时开发时间很紧张,从接到项目到交付上线,大概只用了一个月的时间,开发完成之后累的不行。遗憾的是当时也没有进行总结。只是在想是把自己学到的技术又实现了一遍,现在想起来其实还是有一些新的知识点可以提炼总结的。正好在慕课网上看到了类似的课程,大致听了一遍之后,仿佛把之前的项目给重新稳固了一样,今天趁着这个时间把项目中学到的一些知识,包括但不仅限于app借口开发。
在app开发过程中,JAVA开发实现的app端相当于我们常说的Client端,PHP开发实现的后台相当于我们常说的Server端,它们之间通过HTTP协议通信,app端通过http请求向后台发送请求,后台在收到请求之后进行处理,把数据以约定好的数据格式(可以是JSON/XML)返回给前台来呈现在手机端。示意图如下图所示:
介绍完了工作流程之后,再来说一下接口要完成的事情。在这里有三个概念需要我们注意:
1.接口地址:app端向后台发送的http地址请求
2.接口文件: 用来处理app请求的接口文件
3.返回数据:处理完成后返回给app端的数据格式(JSON/XML)
当app或者电视盒子用户打开手机app或者电视的时候,app会向后台请求是否有新的版本,如果检测到服务器端的版本号和当前版本号不一致的话,会提示用户是否需要升级,升级完成或者用户选择否之后,会向后台服务器发送请求获取数据加载到页面上。加载完成后当用户在界面上点击之后,手机端会向后台发送一个请求,后台在接受到请求之后会启动接口文件对请求进行处理,这里用到的就是上面说的接口文件。接口文件里面包含了我们封装好的php类文件,
假设,我们现在处理的是一个新闻处理类的app的请求:
我在后台写了一个叫request.php的接口文件:
class Request {
const JSON='json';
按照约定的数据格式返回数据的函数
@param integer $code 状态码
@param string $message 提示信息
@param array $data 待处理的数据
return string
public static function show($code,$message='',$data=array()){
if(!is_numberic($code)){
return '';
$result = array(
'code'=&$code,
'message'=&$message,
'data'=&$data
echo json_encode($result);
写好之后,把这个文件作为基类文件封装好,当在其他的地方需要调用的实现,先用require_once函数把文件引入,然后直接引用类里面的这个静态方法即可。
上面,是一个简单的接口文件的示例,当然在实际情况中可能要比这负责一些,包括状态的获取以及提示信息的统一规范。返回的数据格式包括:JSON以及XML,通常我们会选择使用JSON格式,因为JSON格式的生成在PHP这边只需要通过一个函数json_encode即可完成,而且传输数度方面json格式也比XML格式会快很多,所以建议前后台传输的时候使用json格式。
好了,大概就是这么多内容了,如果有什么疑问的话,欢迎给我留言,也可以给我发邮件:
我的热门文章利用PHP如何写APP接口详解
百度关键词优化三天上首页!同行都是朋友,
欢迎一起互利共赢。谢绝一切非正规行业服务,感谢以下同行、团队、平台和代理的支持:
百度站长平台、MIP开发小组、SEO焦大老友、SEO每天一贴ZAC大哥、卢松松大哥、海瑶SEO兄弟、附子SEO兄弟、探索者SEO、帮站SEO好友、互点宝、超快排平台
百亿互刷宝、下拉天下、SEO自学网、SEO研究中心、小明SEO、王德春SEO、马海祥博客、踏雪无痕挂机工作室、SEO云优化好友、云客网、杭州思亿欧、网赚吧、北京SEO韩非老弟
需要了解以上同仁的相关信息,我们已经给你做好了搜索框,看右上角绿色那个,输入搜索即刻直达
您现在的位置: >
【导语】如果您觉得本篇内容还不错,请点击文章下面的赞,然后分享给朋友哦!...
利用PHP如何写APP接口详解-破洛洛教学网...请看详情...
搭建PHP环境
由于本人使用的电脑是Mac,因此推荐大家使用MAMP PRO这款软件,不过是收费版,相信不想花钱的大家会有办法搞定的!
MAMP PRO这款软件是集成环境软件,已经有apache、mysql、php了,具备运行解析PHP的环境了!
如果不想使用集成环境,可以自己搭建。Mac自带了apache和PHP环境的,只需要稍加配置一下就可以使用了,然后再安装一下mysql就可以了!
大家可以看一下简单版本配置:Mac配置PHP环境 这篇文章。
启动服务器
这里是以MAMP PRO软件为例,如何启动服务器。如下图,我们假设服务地址为
,然后将项目目录与这个服务地址关联起来,看图中右下角圈圈部分:
环境启动后,就可以在浏览器中直接输入
运行起来了!
开始GET接口
我们的空项目在首次运行后,会自动生成 index.php 这个文件,我们删除里面的内容,然后修改如下:
$data = array(
'tid' =& 100,
'name' =& '标哥的技术博客',
'site' =& '');
$response = array(
'code' =& 200,
'message' =& 'success for request',
'data' =& $data,
echojson_encode($response);
我们这里的结构是日常App开发中最常见的返回数据结构了吧?通常都是状态码、状态信息和客户端业务数据。
PHP其实也好给力,声明数组后,通过 json_encode 函数就可以输出json格式数据了!
iOS调GET接口
我们有了服务器,也写了接口了,那么客户端如何请求又如何获取数据呢?我们先来看一下最简单的GET请求例子,其中使用了HYBNetworking笔者的这个开源库:
NSString *url = @&/index.php&;
[HYBNetworkinggetWithUrl:urlrefreshCache:YESsuccess:^(id response) {
}fail:^(NSError *error) {
我们看一下iOS客户端的响应结果:
从响应结果可以看到,与我们服务器接口所返回的是一致的,看下图在浏览器中访问的效果:
PHP POST接口
假设我们要求传参数type过来,而且要求是数值型,用于返回不同的数据,当我们做接口测试时,就可以通过这么来干,就不需要等后台给接口了!
$type = $_POST['type'];
$data = '';
if (isset($type) && is_numeric($type) && $type &= 0) {
if ($type == 1) {
$data = array(
'type' =& $type,
'name' =& '标哥的技术博客',
'site' =& '');
} 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);
$response = array(
'code' =& 999,
'message' =& 'argument error for request',
'data' =& $data,
echojson_encode($response);
iOS调POST接口
下面是iOS客户端如何调用刚才所写的PHP POST接口,其中使用了HYBNetworking笔者的这个开源库:
NSString *url = @&/index.php&;
NSDictionary *params = @{@&type& : @(1)};
[HYBNetworkingpostWithUrl:urlrefreshCache:YESparams:paramssuccess:^(id response) {
}fail:^(NSError *error) {
我们看看效果如下,可看到如愿地接收到了服务器返回的接口数据并解析出来了:
本篇文章的内容到这就基本结束了,相信大家若想学习它,一定会认真去操作一遍的!今后会慢慢接触它,慢慢掌握它,一定会让你在工作上更加顺利的!希望本文对大家能有所帮助。
上一篇: 下一篇:
相关说明:
◎利用PHP如何写APP接口详解-破洛洛教学网
◎ SEO家园网提供(利用PHP如何写APP接口详解)在线阅读交流!一切评论内容归本站版权所有!
◎ (利用PHP如何写APP接口详解)由会员分享或者收集(采集)本站对其并不具备版权所有!
◎ 如果(利用PHP如何写APP接口详解)侵犯了您的版权,请告知我们!电子邮件:!
共有149人阅读,期待你的评论!评论关于PHP写APP接口的安全问题探讨(一)_PHP技巧_动态网站制作指南
关于PHP写APP接口的安全问题探讨(一)
来源:人气:3545
关于写APP接口的安全问题探讨(一)在探讨这个问题之前,先要确认一点的是,作为一名互联网Coder,无论你是前端或者后端你都要对http请求要有一定的了解,知道http特性,要清楚的了解http里面的Request与Response是什么,知道为什么网站会存在cookie,,的意义和必要性。因为探讨APP接口的安全性就是在探讨HTTP请求的安全性;我一般把APP接口分为三类,普通接口,表单接口,会员接口;本文重点讨论会员接口普通接口一般为GET请求,比如获取新闻列表 GET /index.php?module=news&action=list,为了防止采集或者暴力查询,我们PC端一般做如下处理:防止本站被它站file_get_contents,所以要识别user_agent,如果不是通过浏览器来访问的话直接不给看。如果别人通过伪造user_agent来访问的话,就通过单位时间的访问量来控制抓取方,可以写一套算法,如果再一个ip在前后一分钟多于多少次访问量来处理。但是,会有一种情况,即某个小区或公司内都是使用某一个IP的外网的话,这样搞就会自寻死路,所以还要配合浏览器中的cookie来处理总结: 请求头可以伪造,IP地址可以变更,cookie可以清空,基本上PC端是很难防这个问题的,比如淘宝,点评等大站的数据我也是经常去采的。那APP端如何处理这个问题呢?我们可以抓点评APP的http请求包来看一下:GET http://114.80.165.113/mapi/ugcuserfeeds.bin?filtertype=5&userid=&token=a9cdff854d989f61eabf0fc9904eb51ff&start=0 HTTP/1.1Host: 114.80.165.113Accept: */*agma-appid: pragma-newtoken: cabf96c8ef2bac73b88f799e49aab4a426d414f994b5fpragma-token: a9cdff854d989f61eabf0fc9904eb51ffpragma-dpid: 1942797pragma-device: 566fe5aeb75a827967fbadba98a4a6Proxy-Connection: keep-alivepragma-os: MApi 1.1 (dpscope 7.5.0 iPhone 8.3 iPhone7,1; a0d0)Accept-Language: zh-cnnetwork-type: wifiUser-Agent: MApi 1.1 (dpscope 7.5.0 iPhone 8.3 iPhone7,1; a0d0) Paros/3.2.13 当你直接访问http://114.80.165.113/mapi/ugcuserfeeds.bin?filtertype=5&userid=&token=a9cdff854d989f61eabf0fc9904eb51ff&start=0的时候,直接从服务器端给挡住,并返回450错误;PHP的服务器一般为Apache或Nignx,我们也可以在配置项中根据与客户端开发人员约定的一些自定义的Request头信息,比如上面的parama-*,在服务器配置项中可以获取到这些自定义的Request头信息,然后根据是否为约定好的Request信息,如果不是就rewrite到450;但是,我们通过抓包既可获得全部请求头信息,这时可以完全模拟请求头信息来获取数据;很多APP最多到此步既可获得该API接口的数据,而且是非常便于处理的json格式,而点评APP到此处直接返回的是一堆看上去是经过压缩的乱码数据:这有点类似于PC端gzip,服务器端返回的是gzip的压缩数据,而浏览器来解压这个gzip来获取真正的数据,然后再显示出来;我不知道点评的这个乱码数据是否也是这个原理,如果是的话,不得不说真的是&棒棒哒&,因为解压的算法是发生在自己的APP端,这不仅保证了数据的安全性,而且还节省带宽流量,加快的数据传输速度。具体是怎么样做的,暂时还不得而知;表单接口即类似html中的from表单,主要是往服务器提交数据的。一般是post方式的http请求,主要的危险是来自于强刷HTTP请求,撑爆;在PC端我们一般通过验证码来解决这个问题,而在APP端,我能想到的也只有通过验证码的方式,只不过PC端的是把验证码存进session,而APP端是存进cache里面;但如果加上验证码的话,在用户体验上肯定会大打折扣,关于这一点肯定有更好的方式解决,具体怎么解决,暂时还不得而知;会员接口所谓会员接口,就是类似/index.php?module=users&action=info&user_id=333的请求,然后服务器端直接根据user_id来做相应的会员操作,这是及其危险的接口处理,等于把当前的会员系统全暴露出来了,只要对方改一下user_id既可操作所有会员对应的接口。一般在PC端,我们是通过加密的cookie来做会员的辨识和维持会话的;但是cookie是属于浏览器的本地存储功能。APP端不能用,所以我们得通过token参数来辨识会员;而这个token该如何处理呢?首先,先说说在做该接口加密前,我一共经历的四个方案:方案一与APP端开发人员约定特定的组合算法,然后两端比对一下,如果相同就allow,不相同就deny;但是,这也是不安全的,如果APP程序被反编译,这些约定的算法就会暴露,特别是在安卓APP中,有了算法,完全就可以模拟接口请求通过验证;方案二数据库会员表的pass是带上了随机密窜并经过双重加密的md5值;在用户登录的时候,我返回会员相应的uid和password,password虽然是明文的,别人知道也不能登录,毕竟是经过加密的,然后每次请求接口的时候user_id=333&token=aa37e10ceab8a2d5020568f,通过主键uid可以很快的找到当前uid对应的token,然后再来比对;但是这样想法是too yang too simple的,抓包的人虽然不能通过密文密码来登录该会员,然而一旦知道了这个token,除非用户更改密码,否则也可以一直通过这个token来操作该会员的相关接口;方案三通过对称加密算法,该加密算法对uid+网站公钥进行时效加密,在一定时效内可用。在会员登录成功时,服务器端对该ID加密后返回给客户端,客户端每次请求接口的时候带上该参数,服务器端通过解密认证;但是这样做,也是不安全的。因为,防外不防内,听说这次的携程宕机就是因为内部离职人员的恶意操作。内部不怀好意的人员如果知道相应的算法规则后,就算没有数据库权限,也可以通过接口来操作相关会员;方案四会员登录的时候请求登录接口,然后服务器端返回给客户端一个token,该token生成的规则是 网站公钥 + 当前uid + 当前时间戳 + 一段随机数双重加密,根据需求决定是把该token放进cache等一段时间自动失效,还是放进数据库(如果要放进数据库的话,单独拎出一张表来,顺便记录用户的登录,登出时间),在用户登出登录的时候改变一下,确保该token只能在用户人为登出登录之间有用。为保安全,应保证让用户在一段时间内自动退出;此方案配合和数据库的权限管理可以防外又防内;其他接口开发的注意事项数据格式最好使用JSON格式数据,因为JSON有较好的跨平台性。在生成JSON的时候,要注意json的两种格式:对象(字典) 与 数组;mobile端开发语言中没有类似PHP中的foreach不能遍历对象,只能遍历数组,他们对对象的操作一般都是通过键名去取键值。不管是成功,还是失败。接口必须提供明确的数据状态信息,并且不能返回NULL,如果返回NULL的话,在IOS端会崩掉。
优质网站模板}

我要回帖

更多关于 接口怎么写 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信