APP接口返回数据的封装类

参考视频http://www.imooc.com/learn/163

<?php 

/**
* app返回数据类
* 1.接受可多维,缺少键名的数组,
* 2.可由输入的format参数决定返回数据格式
* 例子:Response::show(200, ‘success‘, $data);
*/
class Response
{
    const JSON = ‘json‘;

    /**
     * 按json格式输出通信数据
     */
    public static function json($result)
    {
        echo json_encode($result);
    }

    /**
     * encode XML的数据部分
     */
    private static function _xml_encode($data)
    {
        $xml = "";
        foreach ($data as $key => $value) {

            //如果键名是数字,则改为<item id="0"></item>格式
            $attr = ‘‘;
            if (is_numeric($key)) {
                $attr = " id=‘{$key}‘";
                $key = "item";
            }

            //如果键值是数组,则递归调用自己
            $xml .= "<{$key}{$attr}>";
            $xml .= is_array($value) ? "\n" . self::_xml_encode($value) : $value;
            $xml .= "</{$key}>\n";
        }

        return $xml;
    }

    /**
     * 按xml格式输出通信数据
     */
    public static function xml($result)
    {
        header("Content-Type:text/xml");
        $xml = "<?xml version=‘1.0‘ encoding=‘UTF-8‘?>\n";
        $xml .= "<root>\n";

        $xml .= self::_xml_encode($result);

        $xml .= "</root>\n";

        echo $xml;
    }

    /**
     * 按输入的格式输出通信数据
     */
    public static function show($code, $message = "", $data = array(), $type = self::JSON)
    {
        if ( ! is_numeric($code)) {
            die(‘json输入参数需要数字‘);
        }

        //如果存在请求的格式化类型
        $type = isset($_GET[‘format‘]) ? $_GET[‘format‘] : $type;

        $result = array(
            ‘code‘ => $code,
            ‘message‘ => $message,
            ‘data‘ => $data,
        );

        if ($type == ‘json‘) {
            self::json($result);
        }
        elseif($type == ‘xml‘) {
            self::xml($result);
        }
        elseif($type == ‘array‘) {
            echo ‘<pre>‘;
            print_r($result);
            echo ‘</pre>‘;
        }
        exit;
    }

}

//可多维,缺少键名的数组,可由输入的format参数决定返回数据格式
$data = array(
    ‘id‘ => 1,
    ‘name‘ => ‘haha‘,
    ‘addr‘ => array(1,2,3=>array(22,‘hh‘)),
);

Response::show(200, ‘success‘, $data);
 ?>

结果如下:

时间: 2024-10-05 23:26:56

APP接口返回数据的封装类的相关文章

python接口自动化-参数关联和JSESSIONID(上个接口返回数据作为下个接口请求参数)

参数关联是接口测试和性能测试最为重要的一个步骤,很多接口的请求参数是动态的,并且需要从上一个接口的返回值里面取出来,一般只能用一次就失效了.最常见的案例就是网站的登录案例,很多网站的登录并不仅仅只传username和psw两个参数,往往有其它的动态参数.有时候还需要带上cookies参数,如JSESSIONID 登录参数 首先分析下目标网站[学信网:https://account.chsi.com.cn/passport/login]的登录接口请求参数.先随便输入账号和密码,使用fiddler工

服务器开发-对外接口返回数据-封装模板

服务器开发-对外接口返回数据-封装模板 天马行空LQ 关注 1.3 2018.12.15 15:21* 字数 491 阅读 345评论 0喜欢 17赞赏 1 前言: 日常开发中我们一般都会做对外接口的统一数据返回模板,以下是我所采用的数据返回模板,分享出来目的是欢迎大家学习和帮助改进. 以下,Enjoy: DataResult.java(数据模板类): /** * @Auther: 折戟沉沙 * @Description: 接口返回 数据模板 * @Version: 1.0 */ public

检查数据接口返回数据合法性

问题背景: 在测试&部署监控过程中,我们常常会遇到外部接口返回数据不靠谱的时候.最常见的场合是从某个http获取如json和xml等结构化的结果,进行解析并处理,在这时候出现以下这几种常见类型的错误: (1)整个结构不完整.直接无法解析json/xml. (2)编码错误,常见的gbk/utf8错误 (3)超长数据/非法字符. (4)数据类型不匹配.需要是数字的给了字符串,该是数组的给了字符串等,对json本身来说没问题,程序处理就会错误或者崩溃. (5)字段缺失或者为空,这个情况对json本身来

carry-检查数据接口返回数据合法性

问题背景: 在测试&部署监控过程中,我们常常会遇到外部接口返回数据不靠谱的时候.最常见的场合是从某个http获取如json和xml等结构化的结果,进行解析并处理,在这时候出现以下这几种常见类型的错误: (1)整个结构不完整.直接无法解析json/xml. (2)编码错误,常见的gbk/utf8错误 (3)超长数据/非法字符. (4)数据类型不匹配.需要是数字的给了字符串,该是数组的给了字符串等,对json本身来说没问题,程序处理就会错误或者崩溃. (5)字段缺失或者为空,这个情况对json本身来

vue项目中使用mockjs模拟接口返回数据

Mock.js 是一个模拟数据生成器,利用它,可以拦截ajax请求,直接模拟返回数据,这样前后端只要约定好数据格式,前端就不需要依赖后端的接口,可以直接使用模拟的数据了. 网上介绍mock的教程也较多,不过大多数看的比较模糊.其实使用起来非常简单,这里介绍在Vue工程中使用Mockjs,并且实现开发和生产配置化. 一.安装 cnpm install --save-dev mockjs 二.引入 为了只在开发环境使用mock,而打包到生产环境时自动不使用mock,我们可以在env中做一个配置 //

请求接口返回数据的Content-type为br解析

Brotli是一种全新的数据格式,可以提供比Zopfli高20-26%的压缩比. Brotli最初发布于2015年,用于网络字体的离线压缩.Google软件工程师在2015年9月发布了包含通用无损数据压缩的Brotli增强版本,特别侧重于HTTP压缩. 使用Brotli进行流压缩的内容编码类型已被提议使用“br”. 使用httpClient进行请求 需要引入的的依赖: <dependency> <groupId>org.apache.commons</groupId>

php 请求另一个服务器接口返回数据

<?php /** * Created by PhpStorm. * User: thinkpad * Date: 2015/7/17 0017 * Time: 13:24 */ class Action { public static function curl_get($url){ $testurl = $url; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $testurl); //参数为1表示传输数据,为0表示直接输出显示. curl

通过接口返回数据下载文件的两种返回数据类型方法

/** 下载pdf文件 */ private String updateContentName;//文件名 private Call call; private boolean isSuccess = true;//是否下载成功 File target = null; protected void download(String downloadUrl) { showLoading(); target = new File(Environment.getExternalStorageDirect

https_request请求接口返回数据

定义一个https_request方法 <?php function https_request($url, $data = null) { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); if (!empty($data)