art4/requests-psr18-adapter

使用 WordPress/Requests 作为 PSR-18 HTTP 客户端

1.2.0 2023-11-28 08:52 UTC

This package is auto-updated.

Last update: 2024-08-28 10:18:57 UTC


README

Latest Version Software License Build Status codecov Total Downloads

使用 WordPress/Requests 作为 PSR-18 HTTP 客户端适配器。

  • 需要 PHP 7.2+
  • 支持 Requests v1.8+ 和 v2

为什么?

Requests 是一个用 PHP 编写的 HTTP 库,由于与 PHP 5.6+ 的兼容性,它不支持 PSR-7,也不支持 PSR-18。

我在 Requests 中创建了一个 PR 以添加 PSR-7 支持,但这会给 Requests 增加新的直接依赖。因此,我创建了此库作为 Requests 的可选包装器。如果有一天 Requests 本地支持 PSR-7 和 PSR-18,此库可能会变得过时。

如何使用

使用 Composer 安装

WordPress/Requests PSR-18 Adapter 可在 Packagist 上找到,并可以使用 Composer 进行安装。

composer require art4/requests-psr18-adapter

如果您想在 WordPress 实例的上下文中使用 WordPress/Requests PSR-18 Adapter(例如,在插件或主题中),则应将 "rmccue/requests": "*" 作为 replace 包链接添加。这将防止 Composer 两次安装 rmccue/requests,导致致命错误。

示例 composer.json

{
    "require": {
        "art4/requests-psr18-adapter": "^1.1"
    },
    "replace": {
        "rmccue/requests": "*"
    }
}

示例

请查看 示例目录 了解更多示例。

<?php

// First, include the Composer autoload.php
require_once dirname(__DIR__) . '/vendor/autoload.php';

// Define Requests options
$options = [
    'proxy' => '127.0.0.1:8080',
    'transport' => $customTransport,
    // other Requests options
];

// Create the HTTP client
$httpClient = new \Art4\Requests\Psr\HttpClient($options);

// Create a PSR-7 request and optional set other headers
$request = $httpClient->createRequest('GET', 'http://httpbin.org/get');
$request = $request->withHeader('Accept', 'application/json');

try {
    // Send the request
    $response = $httpClient->sendRequest($request);
} catch (\Psr\Http\Client\ClientExceptionInterface $th) {
    // Handle errors
    throw $th;
}

// Use the PSR-7 Response
var_dump($response->getBody()->__toString());