第一个 HTTP 接口
安装器已经创建 App/HttpController/Index.php 和 Router.php。本章新建一个独立控制器,不覆盖它们:访问 /hello 返回文本,再访问 /hello/greet?name=Swoole 返回 JSON。开始前请先完成安装框架。
创建控制器文件
在你的 EasySwoole 项目根目录创建 App/HttpController/Hello.php,完整内容如下:
<?php
namespace App\HttpController;
use EasySwoole\Http\AbstractInterface\Controller;
class Hello extends Controller
{
public function index(): void
{
$this->response()->withHeader('Content-Type', 'text/plain; charset=utf-8');
$this->response()->write('Hello EasySwoole');
}
public function greet(): void
{
$name = $this->request()->getRequestParam('name') ?? 'EasySwoole';
$this->writeJson(200, ['message' => "Hello {$name}"]);
}
}
文件路径、namespace App\HttpController 和类名 Hello 必须对应。安装器已经在 composer.json 中配置 App\ 到 App/ 的自动加载映射,通常不需要再编辑 Composer 配置。
启动并访问
在第一个终端执行:
php easyswoole.php server start
在第二个终端执行:
curl -i http://127.0.0.1:9501/hello
curl -i 'http://127.0.0.1:9501/hello/greet?name=Swoole'
第一个请求的正文应为:
Hello EasySwoole
第二个请求的正文应为:
{"code":200,"result":{"message":"Hello Swoole"},"msg":null}
这里没有修改 Router.php:默认情况下,框架会把 /hello 映射到 Hello::index(),把 /hello/greet 映射到 Hello::greet()。如果出现 404,先确认文件名和命名空间;如果服务此前已启动、修改了 PHP 文件却未生效,执行:
php easyswoole.php server reload
request() 和 response() 是控制器内可用的方法;getRequestParam('name') 读取 Query/Form 参数。writeJson() 会写入框架统一的 code/result/msg 结构、HTTP 状态码和 JSON 响应头。想看 URL 到类和方法的完整映射规则,继续阅读URL 映射与路由。