首页 > 后端开发 > php教程 > 从HTTP消息到PSR-7:这一切

从HTTP消息到PSR-7:这一切

Christopher Nolan
发布: 2025-02-10 11:50:09
原创
998 人浏览过

> psr-7:php

中HTTP消息的标准化方法

From HTTP Messages to PSR-7: What's It All About?

PHP框架互操作性组(PHP-FIG)具有标准化的HTTP消息处理PSR-7。该规范定义了代表HTTP消息的七个接口,从而促进了不同的PHP库和框架之间的互操作性。 这种结构化的,面向对象的方法与传统PHP对全球变量的依赖形成鲜明对比,从而导致更可测试和可维护的代码。

键接口:PSR-7包括

RequestInterface>的接口,每个处理HTTP消息的特定方面。 ResponseInterface库支持:许多流行的库和框架支持PSR-7,包括Symfony,Zend Framework,Slim,Guzzle,Aura和Httplug。 取决于项目需求,可以通过适配器或部分进行集成。> ServerRequestInterface理解HTTP消息:UploadedFileInterface

让我们检查典型的HTTP相互作用。 当您在浏览器中输入

时,请求和响应之间会发生多个步骤。

>

示例原始请求看起来像这样:

bbc.co.uk>由请求行(例如,

),标题线(键:值对),空白行(

)和一个可选的主体组成。>

使用
<code>GET / HTTP/1.1
Host: bbc.co.uk
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
Accept: */*
Referer:</code>
登录后复制
>,我们可以发送此请求并观察响应:>

GET / HTTP/1.1响应可能包括重定向(301个永久移动),然后是成功的请求(200可以)到实际的URL。 rn对于请求和响应,结构相似:消息线,标题线,空白线和一个主体。 PSR-7将这些共同点抽象成界面。

curl

PSR-7接口的关键组件:
curl -i -H "Host: bbc.co.uk" ... http://bbc.co.uk
登录后复制
    /
  • MessageInterface :扩展
  • 表示http requests。
  • RequestInterface :扩展MessageInterface代表http响应。
  • ResponseInterface:扩展MessageInterface用于源自服务器的请求,处理服务器和环境变量之类的详细信息。
  • 态 态
  • ServerRequestInterface:提供用于流操作的包装器,可以有效地处理大数据。RequestInterface
  • 挑战和设计决策: PSR-7的发展涉及重大争论,尤其是有关: UriInterface
  • 不变性:PSR-7对象被设计为不可变值对象。 修改消息会创建一个新实例,从而确保数据完整性。 尽管这增加了复杂性,但它增强了可检验性。UploadedFileInterface
  • 命名StreamInterface:方法签名中的“接口”后缀可以导致冗长代码。 建议将混叠作为解决方法。>

中间件

:PSR-7专注于消息表示。 中间件的处理(请求和响应之间的处理)在PSR-15中分别解决。

  • >用法选项:

    开发人员可以通过多种方式使用PSR-7:

  • 直接实现

    :直接实现接口。>

    间接实现(适配器)
  • :使用适配器在PSR-7和现有库之间桥接。>
  • 部分实现:仅使用特定的接口,例如

  • >。

结论:

> PSR-7为PHP中的HTTP消息处理提供了有价值的标准,从而提高了互操作性和代码质量。虽然它引入了一些复杂性,但标准化和可维护性的好处大于许多项目的缺点。
  1. (经常询问的问题部分在很大程度上保持不变,因为它准确地反映了有关psr-7的信息,并且不需要重大重写伪 - 原始性。

以上是从HTTP消息到PSR-7:这一切的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板