另一辆自行车:一个用于处理HTTP请求的简单库

大家好。

如果不与HTTP请求进行交互,则无法完成API的使用。有人不理会并使用全局数组$ _GET,$ _POST和$ _REQUEST。坦白说,我是自己做的,但是不久前,我为需要某种包装以便于使用而感到困惑。也许已经有这样的库,但是除了Bitrix API(也许我看起来很糟糕)之外,我还没有找到它们,因此我决定编写自己的库。此外,您应该同意在使用代码时使用您的库会更加愉快。

到目前为止,该库可以使用GET和POST方法,以及从php:// input获得的json构造。他还知道如何对https进行检查并获取标头。

连接和通话


要连接库,请使用Composer:

composer require ramapriya/http-request

require __DIR__ . '/vendor/autoload.php';

use Ramapriya\Request\Request;

方法验证


现在您可以使用该库了。例如,如果要查找请求的类型,请调用GetRequestMethod()方法

$method = Request::GetRequestMethod();

switch($method) {
    case 'GET':
        //  
        break;
    case 'POST':
        //  
        break;
}

但是,通常方法的类型是事先已知的,因此为了不创建其他变量,使用分别检查get和post的方法-isGet()isPost()就足够了

if(Request::isPost() !== false) {
   //  
} else if(Request::isGet() !== false) {
   //  
}

接收钥匙


碰巧您需要获取查询参数的列表(不是值,而是键本身),对于Get和Post也有两种方法:

$GetParams = Request::GetParams();

if(in_array($needle, $GetParams)) {
   //  
}

$postParams = Request::PostParams();

if(in_array($needle, $postParams)) {
   //  
}

获得价值


当然,还有一些获取参数值的方法-Get()Post()最有趣的是,您既可以获取单个参数,也可以获取整个数组(顺便说一句,它转换为对象-不要问为什么,我只喜欢使用对象):

if(!empty(Request::Get('user'))) {
   $user = Request::Get('user');
}

$request = Request::Post();
if(Request::isPost() && !empty($request)) {
   //  
}

原始请求(php://输入)


我们还应该详细介绍使用php://输入的方法。isRaw() -检查原始请求,原始() 它返回JSON字符串转换为对象,和RawParams() 它返回请求密钥。我记得当我使用Sendpulse API时,我不得不写这样的东西:

$rawRequest = file_get_contents('php://input');
$request = json_decode($rawRequest);

if(!empty($request)) {
   //  
}

当然,可以省去一个变量。
$request = json_decode(file_get_contents('php://input'));

但是您必须承认,它看起来相当混乱。

使用Raw()isRaw()方法,该代码已经带来了更多的美感:

if(Request::isRaw() === true) {
$request = Request::Raw();
}

使用标题


库中还有几种使用标头的方法:

GetAllHeaders() -获取所有标头。
$headers = Request::GetAllHeaders();

GetHostName() -获取主机名
$domain = Request::GetHostName();

isHttps() -检查https

if(Request::isHttps() !== true) {
   die("Application works only with HTTPS!");
}

GetUserAgent() -获取用户代理。这对某人可能很重要。

$userAgent = Request::GetUserAgent();

该库将得到补充和修改。像往常一样,在github上的源代码

谢谢您的关注。

All Articles