阅读时间:1 分钟
0 字
API 开发
基于路由的灵活 API 接口开发入门指南。
快速开始
1. 注册 API 路由
在模块的 App.php
中注册 API 路由:
php
// app/Api/App.php
<?php
namespace App\Api;
use Core\App\AppExtend;
use Core\Bootstrap;
use Core\Route\Route;
class App extends AppExtend
{
public function register(Bootstrap $bootstrap): void
{
// 注册 API 路由
$apiRoute = new Route('/api/v1', 'api');
\Core\App::route()->set('api', $apiRoute);
}
}
2. 创建控制器
php
// app/Api/UserController.php
<?php
namespace App\Api;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Message\ResponseInterface;
class UserController
{
public function index(ServerRequestInterface $request, ResponseInterface $response): ResponseInterface
{
$users = User::paginate();
["data" => $data, "meta" => $meta] = format_data($users, function ($item) {
return $item->transform();
});
return send($response, 'ok', $data, $meta);
}
public function create(ServerRequestInterface $request, ResponseInterface $response): ResponseInterface
{
$data = $request->getParsedBody();
// 数据验证
$validator = \Core\Validator\Validator::parser($data, [
'name' => [['required', '用户名不能为空']],
'email' => [['required', '邮箱不能为空'], ['email', '邮箱格式不正确']],
]);
$user = User::create($validator->toArray());
return send($response, 'ok', $user->transform());
}
}
3. 注册路由
php
// 在 App.php 的 register 方法中继续添加
$apiRoute->get('/users', UserController::class . ':index', 'users.index');
$apiRoute->post('/users', UserController::class . ':create', 'users.create');
添加认证
php
// 注册需要认证的路由
$authRoute = new Route('/api/auth', 'auth-api', new AuthMiddleware());
\Core\App::route()->set('auth-api', $authRoute);
// 添加需要认证的接口
$authRoute->get('/profile', UserController::class . ':profile', 'profile');
响应格式
php
// 成功响应
return send($response, 'ok', $data, $meta);
// 错误响应(抛出异常)
throw new ExceptionBusiness('用户不存在', 404);