Php PSR-7请求如何工作?

Php PSR-7请求如何工作?,php,httprequest,psr-7,Php,Httprequest,Psr 7,我对基于PSR-7的请求如何工作感到困惑 作为PSR-7,请求必须实现PSR\Http\Message\RequestInterface。通过此接口,请求必须具有正文,并且必须将正文作为实现StreamInterface的对象返回 当我查看流接口时,更多的是处理资源 当我查看laravel或symfony的请求时,所有这些请求都有server、get、post和cookie参数。没有请求正文或类似内容 首先,为什么请求必须有一个主体(如响应),为什么请求主体必须包含一个资源,以及如何执行?请求不

我对基于PSR-7的请求如何工作感到困惑

作为PSR-7,请求必须实现
PSR\Http\Message\RequestInterface
。通过此接口,请求必须具有正文,并且必须将正文作为实现
StreamInterface
的对象返回

当我查看
流接口时,更多的是处理资源

当我查看laravel或symfony的请求时,所有这些请求都有server、get、post和cookie参数。没有
请求正文
或类似内容


首先,为什么请求必须有一个主体(如响应),为什么请求主体必须包含一个资源,以及如何执行?

请求不仅仅是客户端,接收请求的服务器可以使用相同的接口。在那里,身体被流式传输是完全有意义的,因此服务器可以从网络上一点一点地读取,而不需要一次将其全部存储在内存中。接口中存在
getBody
方法并不意味着每个请求都必须有一个body。它也可能是空的。Laravel/Symfony的请求绝对有一个请求正文。它可以通过
$request->getContent()
访问@deceze我试图使用zendframework/zend diactoros,当我创建一个请求时,它迫使我定义一个主体。如果我使用“”或null,它将抛出错误。它要求实际的流资源。如果它可能是空的,为什么不在zend中?@TeomanTıngır表示它是可选的-“消息正文,如果有的话”。如果不设置一个,它似乎使用
'php://temp“
作为值。试着把它设置成那样。