zoukankan      html  css  js  c++  java
  • PHP实现RESTful风格的API实例(二)

    接前一篇:PHP实现RESTful风格的API实例(一)

    Response.php :包含一个Request类,即输出类。根据接收到的Content-Type,将Request类返回的数组拼接成对应的格式,加上header后输出

    <?php
    /**
     * 输出类
     */
    class Response
    {
        const HTTP_VERSION = "HTTP/1.1";
    
        //返回结果
        public static function sendResponse($data)
        {
            //获取数据
            if ($data) {
                $code = 200;
                $message = 'OK';
            } else {
                $code = 404;
                $data = array('error' => 'Not Found');
                $message = 'Not Found';
            }
    
            //输出结果
            header(self::HTTP_VERSION . " " . $code . " " . $message);
            $content_type = isset($_SERVER['CONTENT_TYPE']) ? $_SERVER['CONTENT_TYPE'] : $_SERVER['HTTP_ACCEPT'];
            if (strpos($content_type, 'application/json') !== false) {
                header("Content-Type: application/json");
                echo self::encodeJson($data);
            } else if (strpos($content_type, 'application/xml') !== false) {
                header("Content-Type: application/xml");
                echo self::encodeXml($data);
            } else {
                header("Content-Type: text/html");
                echo self::encodeHtml($data);
            }
        }
    
        //json格式
        private static function encodeJson($responseData)
        {
            return json_encode($responseData);
        }
    
        //xml格式
        private static function encodeXml($responseData)
        {
            $xml = new SimpleXMLElement('<?xml version="1.0"?><rest></rest>');
            foreach ($responseData as $key => $value) {
                if (is_array($value)) {
                    foreach ($value as $k => $v) {
                        $xml->addChild($k, $v);
                    }
                } else {
                    $xml->addChild($key, $value);
                }
            }
            return $xml->asXML();
        }
    
        //html格式
        private static function encodeHtml($responseData)
        {
            $html = "<table border='1'>";
            foreach ($responseData as $key => $value) {
                $html .= "<tr>";
                if (is_array($value)) {
                    foreach ($value as $k => $v) {
                        $html .= "<td>" . $k . "</td><td>" . $v . "</td>";
                    }
                } else {
                    $html .= "<td>" . $key . "</td><td>" . $value . "</td>";
                }
                $html .= "</tr>";
            }
            $html .= "</table>";
            return $html;
        }
    }

    index.php :入口文件,调用Request类取得数据后交给Response处理,最后返回结果

    <?php
    //数据操作类
    require('Request.php');
    //输出类
    require('Response.php');
    //获取数据
    $data = Request::getRequest();
    //输出结果
    Response::sendResponse($data);

    下一篇:PHP实现RESTful风格的API实例(三)

    如果您觉得本文对您的学习有所帮助,可通过支付宝来打赏博主,增加博主的写作动力

  • 相关阅读:
    测试心得
    mysql学习整理
    测试思考
    Win7下安装Mysql方法
    xcall.sh
    hive 的几款可视化连接工具
    mongo 使用 mongoexport 按照条件导出 csv 文件
    WebFlux springboot 2.0
    Calendar java  日历(常用小结)
    java 自定义注解(3)
  • 原文地址:https://www.cnblogs.com/luyucheng/p/6016884.html
Copyright © 2011-2022 走看看