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如何助你掌控自然之力
- 监控使用 Apollo 和 Express 构建的 GraphQL API
- 什么是SDK?避免技术沟通陷阱
- 如何获取天地图开放平台 API Key 密钥(分步指南)
- 什么是API测试?类型、工具及执行方法
- 如何评估我的 API 安全性?
- 开放API领域的领导者:幂简集成
- 企业位置一键查询:Python 利用天眼查 API 实现经纬度查询
- 如何使用JavaScript、Node.js和Express.js构建REST API
- 如何监控 Claude API 使用量?限流预警与配额管理技巧
- API管理 – 什么是API管理?
- 如何用Python抓取雅虎财经数据