请求处理

FastD 默认内置 HTTP、TCP、UDP、WebSocket 协议,由 Swoole 强力驱动。

HTTP

Http 请求处理来源于 Http 组件,由其提供强大的 Http 解析预处理,支持 Swoole.

当用户发起一个 Http 请求的时候,Http 组件会将请求封装成一个 ServerRequestInterface 实现类,实现 PSR7 标准,并且将对象传递到控制器中。

由于 Http 解析是通过 parse_url 进行解析的,因此您需要配置好你的虚拟域名(virtual-host)进行访问,否则会提示 route 404 not found

  1. <?php
  2. namespace Controller;
  3. use FastD\Http\ServerRequest;
  4. class IndexController
  5. {
  6. public function sayHello(ServerRequest $serverRequest)
  7. {
  8. return json($serverRequest->getQueryParams());
  9. }
  10. }

由于 Http 组件实现 PSR7,所以用法是保持 PSR7 一致,操作可以根据 Http 进行查看

如果在 logic 处理中需要中断执行,可以使用 abort 函数进行操作。

  1. <?php
  2. namespace Controller;
  3. use FastD\Http\ServerRequest;
  4. class IndexController
  5. {
  6. public function sayHello(ServerRequest $serverRequest)
  7. {
  8. if (!empty($serverRequest->getQueryParams())) {
  9. abort(400);
  10. }
  11. return json($serverRequest->getQueryParams());
  12. }
  13. }

TCP

TCP 解析协议为 JSON,因此在进行参数传递的时候,需要对上传参数进行 json 编码,即将扩展的是自定义协议封装。

内置默认的数据格式为:

  1. {
  2. "method": "get",
  3. "path": "/",
  4. "args": {
  5. "foo": "bar"
  6. }
  7. }

WebSocket

WebSocket 中也是使用 JSON 作为数据传输格式,和 TCP 参数格式保持一样。

详细服务器配置可以点击: Swoole 服务器

内置服务器协议最终会转换成 HTTP 协议解析,因此可以兼容各种不同的内置服务器,平滑过渡。

下一节: 响应处理