• 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服务器非常精练,关于请求对象的属性与函数只有以上这些。下一节,我们将近入响应对象的讨论。

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

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

  • 相关阅读:
    集合的一些操作总结
    字符串的操作
    python字典的操作总结
    python中的列表知识总结
    Python利用文件操作实现用户名的存储登入操作
    如何理解:城市的“信息化→智能化→智慧化”
    程序员必备技能-怎样快速接手一个项目
    程序员的职业规划
    只要 8 个步骤,学会这个 Docker 命令终极教程!
    使用GitLab实现CI/CD
  • 原文地址:https://www.cnblogs.com/ddcoder/p/13795432.html
Copyright © 2020-2023  润新知