php接口编程
1:自定义接口编程
对于自定义接口最关键就是写接口文档,在接口文档中规定具体的请求地址以及方式,还有具体的参数信息
2:接口文档编写
| 请求地址 | http://jxshop.com/Api/login | 
| 请求方式 | get请求 | 
| 请求的参数 | 
 Username 用户名 必须参数 password 密码 必须参数  | 
| 返回结果 | 
 返回格式为 json 对应的数据信息 Status:具体状态标识(1:登录成功2:登录失败) Msg:具体的提示信息 Data:表示登录成功之后的具体用户信息  | 
3:使用代码具体实现
对于继承的控制器不能有登录验证操作,否则该控制器不能被继承
<?php
class Response{
    const JSON = "json";
    /**
    * 按综合方式输出通信数据
    * @param integer $code 状态码
    * @param string $message 提示信息
    * @param array $data 数据
    * @param string $type 数据类型
    * return string
    */
    public static function show($code, $message = '', $data = array(), $type = self::JSON) {
        if(!is_numeric($code)) {
            return '';
        }
        //通过地址栏传递format是等于json还是xml、array
        $type = isset($_GET['format']) ? $_GET['format'] : self::JSON;
        $result = array(
            'code' => $code,
            'message' => $message,
            'data' => $data,
        );
        if($type == 'json') {
            self::json($code, $message, $data);
            exit;
        } elseif($type == 'array') {
            print_r("<pre>");
            var_dump($result);
        } elseif($type == 'xml') {
            self::xmlEncode($code, $message, $data);
            exit;
        } else {
            //后续添加的其它接口类型
            // TODO
        }
    }
    /**
         *接口文件
         *  按json输出的通信格式
         * @param integer $code状态码
         * @param string $message提示信息
         * @param array $data 数据
         * return string
         */
    public static function json($code,$message='',$data=array()){
        if(!is_numeric($code)){
            return '';
        }
        $result=array(
            'code'=>$code,
            'message'=>$message,
            'data'=>$data
        );
        echo json_encode($result);
        exit();
    }
    /**
    * 按xml方式输出通信数据
    * @param integer $code 状态码
    * @param string $message 提示信息
    * @param array $data 数据
    * return string
    */
    public static function xmlEncode($code, $message, $data = array()){
        if(!is_numeric($code)) {
            return '';
        }
        $result = array(
            'code' => $code,
            'message' => $message,
            'data' => $data,
        );
        header("Content-Type:text/xml");
        $xml = "<?xml version='1.0' encoding='UTF-8'?>\n";
        $xml .= "<root>\n";
        $xml .= self::xmlToEncode($result);
        $xml .= "</root>";
        echo $xml;
        }
        public static function xmlToEncode($data) {
        $xml = $attr = "";
        foreach($data as $key => $value) {
            if(is_numeric($key)) {
                $attr = " id='{$key}'";
                $key = "item";
            }
            $xml .= "<{$key}{$attr}>";
            $xml .= is_array($value) ? self::xmlToEncode($value) : $value;
            $xml .= "</{$key}>\n";
        }
        return $xml;
    }
}
?>
调用接口
<?php
/**
 * 调用接口
 */
require_once('./response.php');
$arr=array(
    'id'=>1,
    'name'=>'baikai'
);
//调用json接口数据
//Response::json(200,'数据返回成功',$arr);
//调用xml接口数据
Response::show(200,'数据返回成功',$arr);
?>
调用结果

php接口编程的更多相关文章
- 多媒体(1):MCI接口编程
		
目录 多媒体(1):MCI接口编程 多媒体(2):WAVE文件格式分析 多媒体(3):基于WindowsAPI的视频捕捉卡操作 多媒体(4):JPEG图像压缩编码 多媒体(1):MCI接口编程
 - Hibernate(八)__级联操作、struts+hibernate+接口编程架构
		
级联操作 所谓级联操作就是说,当你进行主对象某个操作时,从对象hibernate自动完成相应操作. 比如: Department <---->Student 对象关系,我希望当我删除一个d ...
 - 【GoLang】golang 面向对象编程 & 面向接口编程
		
005.面向对象&接口编程 1 面向函数编程 1.1 将数据作为参数传递到函数入参 1.2 对象与函数是分离的 2 面向对象编程 2.1 使用者看起来函数作为对象的属性而非参数 2.2 函数属 ...
 - mybatis(二)接口编程 、动态sql 、批量删除 、动态更新、连表查询
		
原理等不在赘述,这里主要通过代码展现. 在mybatis(一)基础上,新建一个dao包,并在里面编写接口,然后再在xml文件中引入接口路径,其他不变,在运用阶段将比原始方法更节约时间,因为不用再去手动 ...
 - Eclipse 基于接口编程的时候,快速跳转到实现类的方法(图文)
		
Eclipse 基于接口编程的时候,要跳转到实现类很麻烦,其实Eclipse已经实现该功能. 只要按照Ctrl键,把鼠标的光标放在要跳转的方法上面,第一个是跳转到接口里面,第二个方法是跳转到实现类的位 ...
 - 蓝牙防丢器原理、实现与Android BLE接口编程
		
本文是对已实现的蓝牙防丢器项目的总结,阐述蓝牙防丢器的原理.实现与android客户端的蓝牙BLE接口编程.在这里重点关注如何利用BLE接口来进行工程实现,对于BLE的协议.涉及到JNI的BLE接口内 ...
 - javascript设计模式学习之十七——程序设计原则与面向接口编程
		
一.编程设计原则 1)单一职责原则(SRP): 这里的职责是指“引起变化的原因”:单一职责原则体现为:一个对象(方法)只做一件事. 事实上,未必要在任何时候都一成不变地遵守原则,实际开发中,因为种种原 ...
 - SAP接口编程 之 JCo3.0系列(01):JCoDestination
		
SAP接口编程 之 JCo3.0系列(01):JCoDestination 字数2101 阅读103 评论0 喜欢0 JCo3.0是Java语言与ABAP语言双向通讯的中间件.与之前1.0/2.0相比 ...
 - SAP接口编程 之 JCo3.0系列(02) : JCo Client Programming
		
SAP接口编程 之 JCo3.0系列(02) : JCo Client Programming 字数545 阅读52 评论0 喜欢1 JCo3.0调用SAP函数的过程 大致可以总结为以下步骤: 连接至 ...
 - C语言与MATLAB接口 编程与实例 李传军编着
		
罗列一下以前自己学习C语言与MATLAB混编的笔记,顺便复习一遍. <C语言与MATLAB接口 编程与实例 李传军编着>(未看完,目前看到P106) 目录P4-8 ************ ...
 
随机推荐
- TortoiseGit客户端安装及使用(上传代码到git@osc
			
用TortoiseGit客户端之前要下载安装git http://git-scm.com/download/win 下载完安装完就可以了,之后好像就用不上了,全交给TortoiseGit客户端了 第一 ...
 - 关于maven包的引入net.sf.json的问题
			
最开始通过在pom.xml文件中加入 <dependency> <groupId>net.sf.json-lib</groupId> <artifactId& ...
 - 【MATLAB】R2017b两个镜像文件如何安装
			
1.采用DEAMON TOOLS加载镜像1. 2.当安装过程中弹出[请插入DVD2]时,在原来的盘符上面右键点击[装载],选择DVD2的镜像文件.在安装程序处选择[继续]即可正常安装.
 - Rational ClearCase 系列
			
Base + UCM 系列参考:http://blog.csdn.net/hhg208/article/details/5749050
 - 转贴:天然VC的迷局
			
天然VC的迷局作者:棱子 http://www.jkzgr.net/jiankangguanli/176.html 维生素C对人类来说是一种必不可少的维生素.我们可以通过正常饮食获取所需的VC.市场上 ...
 - Tomcat与MySQL的数据源连接方法
			
Tomcat配置数据源,由于项目经常访问数据库,需要不断地打开关闭,这就耗费了大量的资源.所以用数据源的方式访问数据库. 大体步骤: 配置server.xml 配置项目所在的WebRoot/WEB-I ...
 - Jmeter入门16  数据构造之随机数Random Variable & __Random函数
			
接口测试有时参数使用随机数构造.jmeter添加随机数两种方式 1 添加配置 > Random Variable 2 __Random函数 ${__Random(1000,9999) ...
 - PHP Swoole 基于纯真IP库根据IP匹配城市
			
把纯真IP库读到内存,纯真IP库本来就是有序的,然后每次请求二分查找就行,44WIP查找十几次就搞定了 dispatch_mode最好写3,不然做服务的时候,会导致进程任务分配不均匀. max_req ...
 - Android(java)学习笔记12:线程的状态转换图以及常见执行情况
			
1. 线程的状态转换图以及常见执行情况: 2. 线程状态类型: (1)新建状态(New):新创建了一个线程对象.(2)就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start() ...
 - 云盘+Git GUI实现云盘文件版本号控制
			
以下介绍操作细节 1.先下载Git GUI 下载地址:http://msysgit.github.io/ 再下载百度云网盘 下载地址:http://pan.baidu.com 接下来就是安 ...