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、属性
Swoole\Http\Request->header: array:HTTP 请求的头部信息。类型为数组,所有 key 均为小写。
Swoole\Http\Request->server: array:HTTP 请求相关的服务器信息,相当于 PHP 的 $_SERVER 数组。包含了 HTTP 请求的方法,URL 路径,客户端 IP 等信息。
Swoole\Http\Request->get: array:HTTP 请求的 GET 参数,相当于 PHP 中的 $_GET。
注意:为防止 HASH 攻击,GET 参数最大不允许超过 128 个
Swoole\Http\Request->post: array:HTTP POST 参数,个数最大不超过 128 个。
注意:POST 与 Header 加起来的尺寸不得超过 package_max_length 的设置,否则会认为是恶意请求
Swoole\Http\Request->cookie: array:HTTP 请求携带的 COOKIE 信息,格式为键值对数组。
Swoole\Http\Request->files: array:上传文件信息。类型为以 form 名称为 key 的二维数组。与 PHP 的 $_FILES 相同。最大文件尺寸不得超过 package_max_length 设置的值。
注意:请勿使用 Swoole\Http\Server 处理大文件上传。
当 $request 对象销毁时,会自动删除上传的临时文……
Array ( [name] => facepalm.jpg // 浏览器上传时传入的文件名称 [type] => image/jpeg // MIME类型 [tmp_name] => /tmp/swoole.upfile.n3FmFr // 上传的临时文件,文件名以/tmp/swoole.upfile开头 [size] => 15476 // 文件尺寸 [error] => 0 )
2、函数
Swoole\Http\Request->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 数据解析。
Swoole\Http\Request->getData(): string:获取完整的原始 Http 请求报文。包括 Http Header 和 Http Body。
Swoole的http服务器非常精练,关于请求对象的属性与函数只有以上这些。下一节,我们将近入响应对象的讨论。
--------------------------- 我是可爱的分割线 ----------------------------
最后博主借地宣传一下,漳州编程小组招新了,这是一个面向漳州青少年信息学/软件设计的学习小组,有意向的同学点击链接,联系我吧。