PHP Yii2 构建 RESTful API 全教程:图书馆管理系统实战
一. RESTful API 概述
RESTful 架构自引入以来,通过将复杂应用程序拆解为更小、更专注的模块,并通过 RESTful 调用实现模块间通信,彻底改变了软件应用程序的设计方式。基于 Client-Server 架构,Web 客户端和移动应用可以通过统一的服务器端 API 进行交互,从而为用户提供一致的体验。
本教程将指导您使用 PHP 和 Yii2 框架构建一个 RESTful API。以“图书馆管理系统”为例,处理两个主要资源:会员和书籍。通过该 API,您可以对这两类资源进行基本 CRUD 操作,同时实现会员借阅书籍的功能——当一本书被借阅后,其他用户将无法借阅同一本书。
在开始之前,建议您对 PHP 和 Yii 框架有一定了解。如对某些概念不熟悉,可参考官方文档获取更多信息。
二. 环境准备
在构建 API 前,请确保系统已安装以下组件:
- PHP(推荐 7.4 及以上)
- Composer(PHP 依赖管理工具)
- Yii2 框架
创建新应用程序并进入项目目录:
composer create-project --prefer-dist yiisoft/yii2-app-basic library-api
cd library-api
三. 数据库设计与迁移
1. 创建“会员”表
“会员”表用于存储图书馆会员信息,包括姓名和会员资格开始日期。创建迁移文件:
php yii migrate/create create_member_table
在生成的迁移文件中修改 safeUp 方法:
public function safeUp()
{
$this->createTable('member', [
'id' => $this->primaryKey(),
'name' => $this->string()->notNull(),
'membership_start_date' => $this->date()->notNull(),
]);
}
运行迁移:
php yii migrate
2. 创建“书籍”表
创建“书籍”迁移文件:
php yii migrate/create create_book_table
定义表结构:
public function safeUp()
{
$this->createTable('book', [
'id' => $this->primaryKey(),
'title' => $this->string()->notNull(),
'author' => $this->string()->notNull(),
'is_borrowed' => $this->boolean()->defaultValue(false),
]);
}
应用迁移:
php yii migrate
四. 创建 Active Record 模型
为“会员”和“书籍”创建 Active Record 类:
php yii gii/model --tableName=member --modelClass=Member
php yii gii/model --tableName=book --modelClass=Book
五. 构建控制器
1. 创建控制器
php yii gii/controller --controllerClass=MemberController
php yii gii/controller --controllerClass=BookController
2. 配置 URL 管理器
打开 config/web.php,启用 URL 美化:
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
['class' => 'yii\rest\UrlRule', 'controller' => ['member', 'book']],
],
],
配置 JSON 请求解析:
'request' => [
'parsers' => [
'application/json' => 'yii\web\JsonParser',
],
],
六. 测试 API 端点
启动内置服务器:
php yii serve
使用 Postman 或其他工具测试 API。例如:
获取书籍列表:
GET http://localhost:8080/books
成功时返回 JSON 数据。
七. 实现借阅功能
1. 更新“书籍”模型
在 models/Book.php 添加方法:
public function markAsBorrowed()
{
$this->is_borrowed = true;
return $this->save(false);
}
2. 更新控制器
在 LoanController 中添加方法处理借阅请求,验证以下条件:
book_id必须存在数据库中- 书籍未被其他用户借阅
如条件不满足,返回错误响应。
八. 总结
通过本教程,您已学会如何使用 PHP 和 Yii2 构建 RESTful API,包括:
- 数据库设计与迁移
- Active Record 模型创建
- 控制器与路由配置
- CRUD 操作与业务逻辑(借阅功能)
遵循面向对象编程和最佳实践,您可以构建易维护、高效的 API。
完整代码库可在 GitHub 获取,欢迎探索与改进。
原文链接: https://www.twilio.com/en-us/blog/build-restful-api-php-yii2
最新文章
- 十大企业级 API 管理工具全景指南
- Meta×Google 云计算协议:2025 多云/混合云 API 极速落地 AI 出海成本降 40%
- Kimi Chat API入门指南:从注册到实现智能对话
- 5种最佳API认证方法,显著提升…
- API接口重试的8种方法
- AI 推理(Reasoning AI)优势:超越生成模型的架构、算法与实践指南
- 如何使用 DeepSeek 构建 AI Agent:终极指南
- AI 智能体 ReAct 架构设计模式剖析
- 深入解析谷歌翻译API:基于Gemini的规模化高质量翻译与创新应用
- 面向开发者的5个开源大型语言模型API
- 如何使用Python创建API – Ander Fernández Jauregui
- API 集成成本全景解析:从 2 千到 15 万美元的隐藏账单与 ROI 攻略