sndsgd / http
改进的PHP HTTP
v1.0.0
2019-07-30 09:59 UTC
Requires
- php: >=7.1.0
- sndsgd/error: ~0.0.4
- sndsgd/form: >=0.1.3
- sndsgd/fs: >=0.4.0
- sndsgd/util: >=1.1.0
Requires (Dev)
- guzzlehttp/psr7: ^1.3
- mikey179/vfsstream: 1.6.4
- php-mock/php-mock-phpunit: ^2.2.0
- phpunit/phpunit: ^7.5.14
- satooshi/php-coveralls: ~1.0
README
改进的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-data和application/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"
}
}
}