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

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

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

  • 相关阅读:
    单细胞分析实录(8): 展示marker基因的4种图形(一)
    单细胞分析实录(7): 差异表达分析/细胞类型注释
    单细胞分析实录(6): 去除批次效应/整合数据
    单细胞分析实录(5): Seurat标准流程
    R绘图(2): 离散/分类变量如何画热图/方块图
    R绘图(1): 在散点图边缘加上直方图/密度图/箱型图
    单细胞分析实录(4): doublet检测
    单细胞分析实录(3): Cell Hashing数据拆分
    单细胞分析实录(2): 使用Cell Ranger得到表达矩阵
    单细胞分析实录(1): 认识Cell Hashing
  • 原文地址:https://www.cnblogs.com/ddcoder/p/13795432.html
Copyright © 2011-2022 走看看