小编use*_*352的帖子

使用 PSR 7、17 和 18 而不是 Guzzle 的与客户端无关的 API 包装器

PSR

PSR-7PSR-17PSR-18的推出都是一项计划的一部分,旨在使

构建需要以 HTTP 客户端无关的方式向服务器发送 HTTP 请求的应用程序

请参阅PSR-18:HTTP 客户端的 PHP 标准

我一直在使用许多历史上严重依赖 Guzzle 而不是抽象接口的应用程序。这些应用程序中的大多数使用包含 JSON 正文的 GET 或 POST 请求以及也包含 JSON 正文的响应来发出简单的 API 请求,或者针对 HTTP 4xx 或 5xx 错误抛出异常。

API 包装器

这个问题来自最近的一个项目,在该项目中,我尝试开发一个 API 包,该包没有明确依赖于 Guzzle,而是仅依赖于 PSR 接口。

这个想法是创建一个ApiWrapper可以使用以下方式启动的类:

  1. 满足 PSR-18 的HTTP 客户ClientInterface
  2. 满足 PSR-17 要求的请求工厂RequestFactoryInterface
  3. 满足 PSR-17 标准的Stream FactoryStreamFactoryInterface

这个类将有它需要的任何东西:

  1. 使用请求工厂流工厂发出请求 (PSR-7)
  2. 使用HTTP 客户端发送请求
  3. 处理响应 - 因为我们知道这将满足 PSR-7ResponseInterface

这样的 …

php guzzle psr-7

5
推荐指数
1
解决办法
2268
查看次数

标签 统计

guzzle ×1

php ×1

psr-7 ×1