sndsgd/http

改进的PHP HTTP

v1.0.0 2019-07-30 09:59 UTC

This package is not auto-updated.

Last update: 2024-09-14 17:11:07 UTC


README

Latest Version Software License Build Status Coverage Status Total Downloads

改进的PHP HTTP。

要求

您需要 PHP >= 7.1 来使用此库,但是建议使用PHP的最新稳定版本。

安装

使用Composer安装sndsgd/http

用法

此库旨在改进PHP处理HTTP请求的方式,主要通过对请求参数的处理过程进行简化。

改进的请求参数解码器

要尝试解码器,您可以使用位于bin/request-demo.php的脚本与PHP内置的web服务器进行实验。

php -S localhost:8000 bin/request-demo.php

现在,您可以使用任何HTTP客户端向https://:8000发送请求。在下面的示例中,我们将使用httpie。要输出正在进行的请求的信息,只需在下面的任何命令中追加-v即可。

查询字符串解码器

在许多查询参数实现中,您不需要使用括号来表示多个值,但使用PHP时则需要。为了与内置PHP解码器兼容,您可以使用括号继续。

http https://:8000/query a==1 a==2 a[]==💩

结果

    "$_GET": {
        "a": [
            "💩"
        ]
    },
    "sndsgd": {
        "a": [
            "1",
            "2",
            "💩"
        ]
    }
}

请求体解码器

PHP内置的体解码器仅处理multipart/form-dataapplication/x-www-form-urlencoded内容类型,用于POST请求。此库作为polyfill来添加application/json到该列表,并允许解码任何请求方法的请求体。默认情况下,POST请求将由内置PHP解码器处理,但是,您可以通过在php.ini中设置enable_post_data_reading = Off来禁用此功能。

内置解码器不会解码此urlencoded PATCH请求的体

http --form PATCH https://:8000/body a=1 b=2 c[d]=3a

结果

{
    "$_POST": [],
    "$_FILES": [],
    "sndsgd": {
        "a": "1",
        "b": "2",
        "c": {
            "d": "3"
        }
    }
}

上传的文件

使用$_FILES而不是,使用sndsgd/http上传的文件作为请求体的其他参数作为对象包含。

http --form POST https://:8000/body a=1 file@README.md

结果

{
    "$_POST": {
        "a": "1"
    },
    "$_FILES": {
        "file": {
            "name": "README.md",
            "type": "",
            "tmp_name": "/private/var/folders/2b/mtmy5wk56jx13vjgqpydc3nr0000gn/T/php9DTXiq",
            "error": 0,
            "size": 2766
        }
    },
    "sndsgd": {
        "a": "1",
        "file": {
            "filename": "README.md",
            "contentType": "text/x-markdown",
            "realContentType": "text/plain",
            "size": 2766,
            "tempfile": "/private/var/folders/2b/mtmy5wk56jx13vjgqpydc3nr0000gn/T/php9DTXiq"
        }
    }
}