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服务器非常精练,关于请求对象的属性与函数只有以上这些。下一节,我们将近入响应对象的讨论。
--------------------------- 我是可爱的分割线 ----------------------------
最后博主借地宣传一下,漳州编程小组招新了,这是一个面向漳州青少年信息学/软件设计的学习小组,有意向的同学点击链接,联系我吧。
Swoole从入门到入土(11)——HTTP服务器[Request]的更多相关文章
- Oracle数据库基础入门《一》Oracle服务器的构成
Oracle数据库基础入门<一>Oracle服务器的构成 Oracle 服务器是一个具有高性能和高可靠性面向对象关系型数据库管理系统,也是一 个高效的 SQL 语句执行环境. Oracle ...
- RocketMQ入门到入土(二)事务消息&顺序消息
接上一篇:RocketMQ入门到入土(一)新手也能看懂的原理和实战! 一.事务消息的由来 1.案例 引用官方的购物案例: 小明购买一个100元的东西,账户扣款100元的同时需要保证在下游的积分系统给小 ...
- Hexo结合Stun静态博客搭建从入门到入土
摘要 安装npm,安装hexo相关依赖,安装主题stun 修改hexo配置,修改stun配置,部署到github,gitee实现静态访问 给博客加上全局搜索,访问量统计 hexo博客编写模板 tips ...
- QT从入门到入土(三)——信号和槽机制
摘要 信号槽是 Qt 框架引以为豪的机制之一.所谓信号槽,实际就是观察者模式.当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号 (signal).这种发出是没有目的的,类似广播 ...
- Easyui入门视频教程 第11集---Window的使用
目录 Easyui入门视频教程 第11集---Window的使用 Easyui入门视频教程 第10集---Messager的使用 Easyui入门视频教程 第09集---登录完善 图标自定义 ...
- 基于 libevent 开发的 C++ 11 高性能网络服务器 evpp(360的作品)
evpp是一个基于libevent开发的现代化C++11高性能网络服务器,自带TCP/UDP/HTTP等协议的异步非阻塞式的服务器和客户端库. 特性: 现代版的C++11接口 非阻塞异步接口都是C++ ...
- QT从入门到入土(一)——Qt5.14.2安装教程和VS2019环境配置
引言 24岁的某天,承载着周围人的关心,一路南下.天晴心静,听着斑马,不免对未来有些彷徨.但是呢,人生总要走陌生的路,看陌生的风景,所幸可以听着不变的歌,关心自己的人就那么多.就像是对庸常生活的一次越 ...
- QT从入门到入土(二)——对象模型(对象树)和窗口坐标体系
摘要 我们使用的标准 C++,其设计的对象模型虽然已经提供了非常高效的 RTTI 支持,但是在某些方面还是不够灵活.比如在 GUI 编程方面,既需要高效的运行效率也需要强大的灵活性,诸如删除某窗口时可 ...
- QT从入门到入土(四)——多线程(QtConcurrent::run())
引言 在前面对Qt多线程(QThread)做了详细的分析:QT从入门到入土(四)--多线程(QThread) - 唯有自己强大 - 博客园 (cnblogs.com) 但是最近在做项目时候,要将一个函 ...
- COM编程入门第二部分——深入COM服务器
本文为刚刚接触COM的程序员提供编程指南,解释COM服务器内幕以及如何用C++编写自己的接口.继上一篇COM编程入门之后,本文将讨论有关 COM服务器的内容,解释编写自己的COM接口和COM服务器所需 ...
随机推荐
- grpc-环境与示例
1. 数据传输基本原理 2. grpc环境安装 代码生成器 go get -u github.com/golang/protobuf/protoc-gen-go // 会自动在 $GOPATH/bin ...
- 2.4G+MCU低功耗二合一芯片SI24R03
2.4G+MCU低功耗二合一芯片SI24R03 1 简介 Si24R03 是一款高度集成的低功耗 SOC 芯片,其集成了基于 RISC-V 核的低功耗 MCU 和 工作在 2.4GHz ISM 频段的 ...
- PG数据库存储验证
PG数据库存储验证 背景 最近学习了SQLServer数据库的varchar和nvarchar的存储 想到PG数据库其实没让选择字符集,也没有nvarchar 所以想学习一下nvarchar的使用情况 ...
- Redis内存问题的学习之一
Redis内存问题的学习之一 背景 前几天帮同事看redis的问题 发现info memory 显示 60GB 但是实际上 save出来的dump文件只有 800M 然后导入到其他的redis之后, ...
- [转帖]etcd raft模块解析
https://www.cnblogs.com/luohaixian/p/16641100.html 1. Raft简介 raft是一个管理复制式日志的共识算法,它是通过复制日志的方式来保持状态机里的 ...
- [转帖] jq命令用法总结
https://www.cnblogs.com/codelogs/p/16324928.html 原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处. 简介# 如果说要给Li ...
- ipset的学习与使用
ipset的学习与使用 场景说明 虽然可以通过: firewall-cmd --zone=trusted --add-source=$1 --permanent && firewall ...
- 【转贴】libcrypto.so.10丢失导致sshd无法运行解决方案
http://www.cnblogs.com/billy98/p/4226023.html libcrypto.so.10丢失导致sshd无法运行解决方案 服务器由于掉电开启系统后无法远程ssh,重启 ...
- Golang Map底层实现简述
Go的map是一种高效的数据结构,用于存储键值对.其底层实现是一个哈希表(hash table),下面是有关map底层实现的详细介绍: 哈希表: map的底层实现是一个哈希表,也称为散列表.哈希表是一 ...
- python快速入门【一】-----基础语法
python入门合集: python快速入门[一]-----基础语法 python快速入门[二]----常见的数据结构 python快速入门[三]-----For 循环.While 循环 python ...