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
- 1. AI文本生成
- 2. AI图片生成_文生图
- 3. AI图片生成_图生图
- 4. AI图像编辑
- 5. AI视频生成_文生视频
- 6. AI视频生成_图生视频
- 7. AI语音合成_文生语音
- 8. AI文本生成(中国)
最新文章
- 如何获取企查查开放平台 API Key 密钥(分步指南)
- 什么是SDK?避免技术沟通陷阱
- 使用公共API增强内容管理
- 使用 ChatGPT 和 json-server 快速实现 mock API
- 品牌视觉的新时代:Brandfetch Logo API助你轻松获取品牌标识
- Kling AI API 实战指南:通过 Replicate 集成视频生成能力
- FastAPI 快速开发 Web API 项目: 通过 SQLAlchemy 进行数据操作
- 企业位置一键查询:Python 利用天眼查 API 实现经纬度查询
- 如何快速搭建用于模拟测试的Python REST API服务器
- API管理 – 什么是API管理?
- 如何用Python抓取雅虎财经数据
- Ambee土壤API:农业科技中的创新与应用案例