利用PHP如何写APP接口详解

搭建PHP环境

由于本人使用的电脑是Mac,因此推荐大家使用MAMP PRO这款软件,不过是收费版,相信不想花钱的大家会有办法搞定的!

MAMP PRO这款软件是集成环境软件,已经有apache、mysql、php了,具备运行解析PHP的环境了!

如果不想使用集成环境,可以自己搭建。Mac自带了apache和PHP环境的,只需要稍加配置一下就可以使用了,然后再安装一下mysql就可以了!

大家可以看一下简单版本配置:Mac配置PHP环境 这篇文章。

启动服务器

这里是以MAMP PRO软件为例,如何启动服务器。如下图,我们假设服务地址为 www.api.com ,然后将项目目录与这个服务地址关联起来,看图中右下角圈圈部分:

环境启动后,就可以在浏览器中直接输入 www.api.com 运行起来了!

开始GET接口

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

 <?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格式数据了!

iOS调GET接口

我们有了服务器,也写了接口了,那么客户端如何请求又如何获取数据呢?我们先来看一下最简单的GET请求例子,其中使用了HYBNetworking笔者的这个开源库:

NSString *url = @"http://www.api.com/index.php";
[HYBNetworkinggetWithUrl:urlrefreshCache:YESsuccess:^(id response) {

}fail:^(NSError *error) {

}];

我们看一下iOS客户端的响应结果:

从响应结果可以看到,与我们服务器接口所返回的是一致的,看下图在浏览器中访问的效果:

PHP POST接口

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

<?php

$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);

iOS调POST接口

下面是iOS客户端如何调用刚才所写的PHP POST接口,其中使用了HYBNetworking笔者的这个开源库:

NSString *url = @"http://www.api.com/index.php";
NSDictionary *params = @{@"type" : @(1)};
[HYBNetworkingpostWithUrl:urlrefreshCache:YESparams:paramssuccess:^(id response) {

}fail:^(NSError *error) {

}];

我们看看效果如下,可看到如愿地接收到了服务器返回的接口数据并解析出来了:

总结

本篇文章的内容到这就基本结束了,相信大家若想学习它,一定会认真去操作一遍的!今后会慢慢接触它,慢慢掌握它,一定会让你在工作上更加顺利的!希望本文对大家能有所帮助。

(0)

相关推荐

  • php读取二进制流(C语言结构体struct数据文件)的深入解析

    尽管php是用C语言开发的,不过令我不解的是php没有提供对结构体struct的直接支持.不过php提供了pack和unpack函数,用来进行二进制数据(binary data)和php内部数据的互转: 复制代码 代码如下: string pack ( string $format [, mixed $args [, mixed $...]] )   //Pack given arguments into binary string according to format.  array unp

  • 浅谈使用 PHP 进行手机 APP 开发(API 接口开发)

    一.先简单回答两个问题: 1.PHP 可以开发客户端? 答:可以,因为PHP是脚本语言,是负责完成 B/S架构 或 C/S架构 的S部分,即:主要用于服务端的开发.但是,PHP可不仅仅只能在互联网站上发展,一个PHP for Android(PFA)站点表示他们将可以发布编程模型.工具盒文档让PHP在Android上实现应用.该项目的主要赞助商是开源公司IronTec,PFA使用Scripting Layer for Android (SL4A),也就是Androd Scripting Envi

  • PHP接收App端发送文件流的方法

    本文实例讲述了PHP接收App端发送文件流的方法.分享给大家供大家参考,具体如下: 解决思路: 1. 客户端多张图片进行循环上传,同时附带参数,并用一定规则组合生产数据流(图片数据放在最后) 2. 使用数据流进行传输,php服务端用file_get_content('php://input')进行接收 3. 传输完毕后将数据流按照规则分割,取出最后的图片数据,并写入图片文件 示例代码: 以下代码是发送单张图片和参数PHP文件,多张图片可循环调用. <?php /* curl_post.php *

  • php发送与接收流文件的方法

    本文实例讲述了php发送与接收流文件的方法.分享给大家供大家参考.具体如下: sendStreamFile.php 把文件以流的形式发送 receiveStreamFile.php 接收流文件并保存到本地 sendStreamFile.php文件: <?php /** php 发送流文件 * @param String $url 接收的路径 * @param String $file 要发送的文件 * @return boolean */ function sendStreamFile($url

  • php通过文件流方式复制文件的方法

    本文实例讲述了php通过文件流方式复制文件的方法.分享给大家供大家参考.具体分析如下: php的stream_copy_to_stream()函数可以被用来将一个流中的数据复制到另一个.下面的代码演示了通过流的方式复制文件的代码 <?php function stream_copy($src, $dest) { $fsrc = fopen($src,'r'); $fdest = fopen($dest,'w+'); $len = stream_copy_to_stream($fsrc,$fdes

  • php微信支付之APP支付方法

    本文实例讲述了微信开放平台移动应用集成微信支付功能.分享给大家供大家参考.具体分析如下: WechatAppPay文件代码如下: 复制代码 代码如下: <?php namespace common\services\WechatPay; class WechatAppPay extends WechatPayBase {     //package参数     public $package = [];     //异步通知参数     public $notify = [];     //推送

  • PHP实现批量生成App各种尺寸Logo

    使用PHP GD,使用良好,一键剪裁各种尺寸,打包下载.经常换icon的懂的,美工给你一个1024的logo,你得ps出各种尺寸,于是有了这个东西. 核心代码 复制代码 代码如下: <?php class image {     /**      * source image      *      * @var string|array      */     private $source;     /**      * temporay image      *      * @var f

  • PHP编写简单的App接口

    本篇是笔记尝试写的第一个PHP接口,并在iOS开发中尝试应用测试.今天给大家分享如何自己写接口来测试! 相信很多朋友在开发时遇到过这样的问题:后台什么时候提供接口?怎么才提供一个接口,其他接口什么时候给出来?没有接口我们前端怎么能做得了? 哈哈!大学学完本篇就可以自己搞个接口来返回固定的死数据来测试了! 搭建PHP环境 由于本人使用的电脑是Mac,因此推荐大家使用MAMP PRO这款软件,不过是收费版,相信不想花钱的大家会有办法搞定的! MAMP PRO这款软件是集成环境软件,已经有apache

  • 利用PHP如何写APP接口详解

    搭建PHP环境 由于本人使用的电脑是Mac,因此推荐大家使用MAMP PRO这款软件,不过是收费版,相信不想花钱的大家会有办法搞定的! MAMP PRO这款软件是集成环境软件,已经有apache.mysql.php了,具备运行解析PHP的环境了! 如果不想使用集成环境,可以自己搭建.Mac自带了apache和PHP环境的,只需要稍加配置一下就可以使用了,然后再安装一下mysql就可以了! 大家可以看一下简单版本配置:Mac配置PHP环境 这篇文章. 启动服务器 这里是以MAMP PRO软件为例,

  • Python利用三层神经网络实现手写数字分类详解

    目录 前言 一.神经网络组成 二.代码实现 1.引入库 2.导入数据集 3.全连接层 4.ReLU激活函数层 5.Softmax损失层 6.网络训练与推断模块 三.代码debug 四.结果展示 补充 前言 本文做的是基于三层神经网络实现手写数字分类,神经网络设计是设计复杂深度学习算法应用的基础,本文将介绍如何设计一个三层神经网络模型来实现手写数字分类.首先介绍如何利用高级编程语言Python搭建神经网络训练和推断框架来实现手写数字分类的训练和使用. 本文实验文档下载 一.神经网络组成 一个完整的

  • 利用二进制文件安装etcd的教程详解

    etcd组件作为一个高可用强一致性的服务发现存储仓库. etcd作为一个受到ZooKeeper与doozer启发而催生的项目,除了拥有与之类似的功能外,更专注于以下四点. 简单:基于HTTP+JSON的API让你用curl就可以轻松使用. 安全:可选SSL客户认证机制. 快速:每个实例每秒支持一千次写操作. 可信:使用Raft算法充分实现了分布式. 场景一:服务发现(Service Discovery)一个强一致性.高可用的服务存储目录.基于Raft算法的etcd天生就是这样一个强一致性高可用的

  • .NET Core利用 AsyncLocal 实现共享变量的代码详解

    目录 简介 AsyncLocal 解读 总结 简介 我们如果需要整个程序共享一个变量,我们仅需将该变量放在某个静态类的静态变量上即可(不满足我们的需求,静态变量上,整个程序都是固定值).我们在Web 应用程序中,每个Web 请求服务器都为其分配了一个独立线程,如何实现用户,租户等信息隔离在这些独立线程中.这就是今天要说的线程本地存储.针对线程本地存储 .NET 给我们提供了两个类 ThreadLocal 和 AsyncLocal.我们可以通过查看以下例子清晰的看到两者的区别: [TestClas

  • Java利用redis zset实现延时任务详解

    目录 一.实现原理 二.准备工作 三.代码实现 四.优缺点 所谓的延时任务给大家举个例子:你买了一张火车票,必须在30分钟之内付款,否则该订单被自动取消.「订单30分钟不付款自动取消,这个任务就是一个延时任务.」   我之前已经写过2篇关于延时任务的文章: <通过DelayQueue实现延时任务> <基于netty时间轮算法实战> 这两种方法都有一个缺点:都是基于单体应用的内存的方式运行延时任务的,一旦出现单点故障,可能出现延时任务数据的丢失.所以此篇文章给大家介绍实现延时任务的第

  • SpringBoot利用AOP实现一个日志管理详解

    目录 1. 需求 2. 新建一张日志表 3. 写相应的Controller层 4.Service接口层 5.Service实现 6.Mapper接口 7.Mapper.xml(我用的是Mybatis) 8.CspLog 9.实体类SysOperCspLog 10. 定义日志管理的切面 11.AsyncFactoryCsp 12. 写一个Controller的Demo来执行一条日志试试 1. 需求 目前有这么个问题,有两个系统CSP和OMS,这俩系统共用的是同一套日志操作:Log;目前想区分下这俩

  • php写app接口并返回json数据的实例(分享)

    第一步:conn.PHP文件,用于连接数据库并定义接口格式,代码如下: <?php header("charset=utf-8"); $servername="localhost"; $username="root"; $password="root"; $dbname="test"; $conn = mysql_connect($servername,$username,$password); if

  • 微信小程序 利用css实现遮罩效果实例详解

    微信小程序 利用css实现遮罩效果实例详解 实现效果图: 如图所示,使用css实现小程序的遮罩效果,代码如下 js文件代码: //index.js //获取应用实例 var app = getApp() Page({ data: { flag: false }, a: function(){ this.setData({flag: false}) }, b: function(){ this.setData({flag: true}) } }) wxss文件代码: .b1{position:fi

  • 类似Object监视器方法的Condition接口(详解)

    在<基于线程.并发的基本概念(详解)>中,我们利用synchronized关键字.Queue队列.以及Object监视器方法实现了生产者消费者,介绍了有关线程的一些基本概念.Object类提供的wait的方法和notifyAll方法,与之对应的是Condition接口提供是await和signalAll.await(或wait)是让当前线程进入等待状态并释放锁,signalAll(或notifyAll)则是唤醒等待中的线程,使得等待中的线程有竞争锁的资格,注意只是资格,并不代表被唤醒的线程就一

  • Java实现生产者消费者问题与读者写者问题详解

    1.生产者消费者问题 生产者消费者问题是研究多线程程序时绕不开的经典问题之一,它描述是有一块缓冲区作为仓库,生产者可以将产品放入仓库,消费者则可以从仓库中取走产品.解决生产者/消费者问题的方法可分为两类:(1)采用某种机制保护生产者和消费者之间的同步:(2)在生产者和消费者之间建立一个管道.第一种方式有较高的效率,并且易于实现,代码的可控制性较好,属于常用的模式.第二种管道缓冲区不易控制,被传输数据对象不易于封装等,实用性不强. 同步问题核心在于:如何保证同一资源被多个线程并发访问时的完整性.常

随机推荐