请求与响应处理


请求处理(Request)

MiniFramework 在接收到一个请求时,会创建 Mini\Base\Request 类的单例对象,与请求相关的信息可以通过这个对象进行解析和获取,例如获取请求头信息(Headers),代码如下:

namespace App\Controller;

use Mini\Base\Action;
use Mini\Base\Request;

class Index extends Action
{
    function indexAction()
    {
        // 获取 Request 单例对象
        $request = Request::getInstance();

        // 获取 Request Header 对象
        $header = $request->getHeader();

        // 获取全部的 Request Header 信息
        $headers = $header->getAll();

        // 另一种写法:链式操作获取 Request Header 信息
        $headers2 = Request::getInstance()->getHeader()->getAll();

        // 用 MiniFramework 框架自带的全局函数 dump 输出数组信息
        dump($headers);
        dump($headers2);
        die();
    }
}

响应处理(Response)

MiniFramework 在 2.9.0 版本中新增了 Mini\Base\Response 核心类,用来替代原有的 Mini\Base\Http 类中对于响应输出的功能,从而在整体架构上对核心类库进行规范。

下面的示例代码演示了在控制器中向浏览器输出 JSON 格式信息的方法,代码如下:

namespace App\Controller;

use Mini\Base\Action;
use Mini\Base\Response;

class Index extends Action
{
    function indexAction()
    {
        $json = json_encode(['info' => 'Hello World!']);

        // 获取 Response 单例对象
        $response = Response::getInstance();

        // 链式操作输出 JSON 格式的结果
        $response->type('json')->httpStatus(200)->send($json);
    }
}

上面的代码中,通过向 type() 方法中传入 json 字符串参数,来声明向浏览器输出的 Content-Type为 application/json 类型;第二个调用的 httpStatus() 方法是用来声明 HTTP STATUS CODE 状态码为 200;最后的 send() 方法作用是把 $json 变量中存放的 JSON 格式字符串按预设的方式输出给浏览器。

提示:MiniFramework 在 2.9.0 版本加入了 Mini\Base\Response 核心类。

HTTP 头信息处理(Header)

MiniFramework 在 2.9.0 版本中新增了 Mini\Base\Header 核心类,用于处理 HTTP 请求头和响应头,并在 Mini\Base\Request 和 Mini\Base\Response 中均提供了同名的 getHeader() 方法,用来获取各自的 Header 对象。

下面的示例代码演示了获取请求头中的 User-Agent 信息,并向浏览器输出名为Info1 和 Info2 的自定义响应头信息的方法,最终将 User-Agent 信息显示在浏览器中,代码如下:

namespace App\Controller;

use Mini\Base\Action;
use Mini\Base\Request;
use Mini\Base\Response;

class Index extends Action
{
    function indexAction()
    {
        // 获取 Request 单例对象
        $request = Request::getInstance();

        // 链式操作获取请求头信息
        $requestHeaders = $request->getHeader()->getAll();

        // 从请求头中获得 User-Agent 信息
        $ua = 'User-Agent:' . $requestHeaders['User-Agent'];

        // 获取 Response 单例对象
        $response = Response::getInstance();

        // 获取响应头的 Header 对象
        $header = $response->getHeader();

        // 添加一个名为 Info1 的响应头信息,值为 Hello World!
        $header->add('Info1', 'Hello World!');

        //另一种写法,用 header() 方法来写入一个名为 Info2 的响应头
        $response->header('Info2', 'Hello World!')->send($ua);
    }
}

提示:MiniFramework 在 2.9.0 版本中加入了 Mini\Base\Header 核心类。