服务器端请求的含义

时间:2016-10-13 02:13:01

标签: php httprequest psr-7

我想知道是否有人可以向我解释服务器端请求的含义。它可能只是我不太了解的术语。对我而言,这听起来像是从服务器到客户端的请求,但我认为不是这样。

关于PHP PSR7。我想弄清楚为什么它同时包含RequestInterfaceServerRequestInterface。我无法在任何地方找到关于它的任何东西,我无法看到为什么这两个不仅仅合并到一个界面的原因。

2 个答案:

答案 0 :(得分:5)

我同意不清楚它们对服务器端请求的含义是什么"。众所周知,HTTP请求是由客户端(浏览器,机器人,REST API用户等)发送的,毕竟是由服务器接收的。但是,"服务器"可以在不同的背景下引用不同的东西。

HTTP请求由 HTTP服务器接收,例如Apache,Nginx和Microsoft IIS。服务器提供Server Application Programming Interface (SAPI),特别允许对Web服务器解析的信息进行后处理。

PHP引擎(Zend)通过其SAPI( Server API )模块与不同的环境进行交互。该模块由许多子模块组成:CLI(命令行接口),CGI(通用网关接口),Apache,FPM(FastCGI过程管理器)等。每个人都对PHP超级全局(example)的内容有自己的想法。

原始HTTP请求由Web服务器解析。 PHP通过SAPI从Web服务器请求解析的数据进行进一步处理,然后以超级全局的形式传递给我们,特别是。

RequestInterface因此代表第一个简单的 HTTP请求,它不会将其标题或消息正文的某些部分分类为Cookie,上传数据,GET或POST-变量等,因为它在official documentation中间接提到:

  

RequestInterfaceResponseInterface与RFC 7230中描述的请求和响应消息基本上具有1:1的相关性。它们提供了用于实现与其建模的特定HTTP消息类型相对应的值对象的接口。

它只提供常见请求参数的接口,例如URI,方案,查询和端口。

ServerRequestInterface表示HTTP消息(请求)的简单表示的解析版本。它引入了对消息的逻辑分类部分的访问,生成的服务器端部件:上传的文件,cookie,服务器参数等。

我建议将RequestInterface视为 HTTP请求,因为它来自客户端 ServerRequestInterface已经不是客户端请求 =),即服务器修改的原始请求版本(SAPI)。

答案 1 :(得分:1)

无法给出更好的答案:

  

RequestInterface提供HTTP的一般表示   请求消息。但是,服务器端请求需要额外的   治疗,由于服务器端环境的性质。   服务器端处理需要考虑Common Gateway   接口(CGI),更具体地说,PHP的抽象和   通过其服务器API(SAPI)扩展CGI。 PHP提供了   通过超全局输入编组的简化,例如:

...

  

ServerRequestInterface扩展RequestInterface以提供   围绕这些各种超级全球的抽象。这种做法有帮助   减少消费者与超全球的联系,并鼓励和   提升测试请求消费者的能力。

http://www.php-fig.org/psr/psr-7/