eva/http-request

HTTP消息的通用接口

dev-main 2023-09-20 16:54 UTC

This package is auto-updated.

Last update: 2024-09-20 19:19:53 UTC


README

该库提供对HTTP协议的交互

基于Http数据包的模型。然而,它不支持psr,不应完全使用。

该库包括

  1. 请求和响应的HTTP消息构建器
  2. 解析器,允许您快速从HTTP消息中提取数据,格式易于处理
  3. RequestSender - 发送和接收消息的实现(使用套接字进行低级发送)
  4. 简单的客户端和包装器,可以是简单的本地请求或创建完整的请求服务(示例在示例文件夹中)

安装

  1. 在您的composer文件中添加 "minimum-stability": "dev"
  2. 安装
composer require "eva/http-request"

简单示例

<?php

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

$request = new Eva\Http\Message\Request(
    \Eva\Http\HttpMethodsEnum::GET,
    'https://www.google.com',
    [
        'Authorization' => 'Bearer eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJlNjc4ZjIzMzQ3ZTM0MTBkYjdlNjg3Njc4MjNiMmQ3MCI'
    ]
);
$client = new \Eva\Http\Client();
$response = $client->sendRequest($request);

if ($response->getStatusCode() === 200) {
    echo $response->getBody();
} else {
    throw new RuntimeException($response->getBody());
}

使用HttpRequestMessageBuilder

(通常用于构建查询、主体、json等)

<?php

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

$httpRequestMessageBuilder = new \Eva\Http\Builder\HttpRequestMessageBuilder;
$httpRequestMessageBuilder
    ->addMethod(\Eva\Http\HttpMethodsEnum::GET)
    ->addUrl('https://www.google.com')
    ->addHeaders([
        'Authorization' => 'Bearer eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJlNjc4ZjIzMzQ3ZTM0MTBkYjdlNjg3Njc4MjNiMmQ3MCI'
    ]);
$request = $httpRequestMessageBuilder->build();
$client = new \Eva\Http\Client();
$response = $client->sendRequest($request);

if ($response->getStatusCode() === 200) {
    echo $response->getBody();
} else {
    throw new RuntimeException($response->getBody());
}

使用HttpMethodsTrait

<?php

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

$client = new \Eva\Http\Client();
$response = $client->get('https://www.google.com', [
    'Authorization' => 'Bearer eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJlNjc4ZjIzMzQ3ZTM0MTBkYjdlNjg3Njc4MjNiMmQ3MCI',
]);

if ($response->getStatusCode() === 200) {
    echo $response->getBody();
} else {
    throw new RuntimeException($response->getBody());
}