Swoole从入门到入土(11)——HTTP服务器[Request]

http服务器的本质是应答式的服务器。我们只需关注onRequest事件中的request(请求)和response(响应)对象。让我们一起回顾一下onRequest事件:

$http->on("request", function ($request, $response) {
    $response->header("Content-Type", "text/html");
    $response->end("<h1>Hello Swoole. #".rand(1000, 9999)."</h1>");
});

在这一节中,我们对请求对象展开讨论。

1、属性

SwooleHttpRequest->header: array:HTTP 请求的头部信息。类型为数组,所有 key 均为小写。

SwooleHttpRequest->server: array:HTTP 请求相关的服务器信息,相当于 PHP 的 $_SERVER 数组。包含了 HTTP 请求的方法,URL 路径,客户端 IP 等信息。

SwooleHttpRequest->get: array:HTTP 请求的 GET 参数,相当于 PHP 中的 $_GET。

注意:为防止 HASH 攻击,GET 参数最大不允许超过 128 个

SwooleHttpRequest->post: array:HTTP POST 参数,个数最大不超过 128 个。

注意:POST 与 Header 加起来的尺寸不得超过 package_max_length 的设置,否则会认为是恶意请求

SwooleHttpRequest->cookie: array:HTTP 请求携带的 COOKIE 信息,格式为键值对数组。

SwooleHttpRequest->files: array:上传文件信息。类型为以 form 名称为 key 的二维数组。与 PHP 的 $_FILES 相同。最大文件尺寸不得超过 package_max_length 设置的值。

注意:请勿使用 SwooleHttpServer 处理大文件上传。

           当 $request 对象销毁时,会自动删除上传的临时文……

Array
(
    [name] => facepalm.jpg // 浏览器上传时传入的文件名称
    [type] => image/jpeg // MIME类型
    [tmp_name] => /tmp/swoole.upfile.n3FmFr // 上传的临时文件,文件名以/tmp/swoole.upfile开头
    [size] => 15476 // 文件尺寸
    [error] => 0
)

2、函数

SwooleHttpRequest->getContent(): string:获取原始的 POST 包体,用于非 application/x-www-form-urlencoded 格式的 HTTP POST 请求。返回原始 POST 数据,此函数等同于 PHP 的 fopen('php://input')

注意:Swoole 版本 >= v4.5.0 可用,在低版本可使用别名 rawContent (此别名将永久保留,即向下兼容)

           有些情况下服务器不需要解析 HTTP POST 请求参数,通过 http_parse_post 配置,可以关闭 POST 数据解析。

SwooleHttpRequest->getData(): string:获取完整的原始 Http 请求报文。包括 Http Header 和 Http Body。

Swoole的http服务器非常精练,关于请求对象的属性与函数只有以上这些。下一节,我们将近入响应对象的讨论。

---------------------------  我是可爱的分割线  ----------------------------

最后博主借地宣传一下,漳州编程小组招新了,这是一个面向漳州青少年信息学/软件设计的学习小组,有意向的同学点击链接,联系我吧。

原文地址:https://www.cnblogs.com/ddcoder/p/13795432.html