PHP Yii2 构建 RESTful API 全教程:图书馆管理系统实战

作者:API传播员 · 2025-09-12 · 阅读时间:4分钟
本教程详细介绍了如何使用PHP和Yii2框架构建一个RESTful API,以图书馆管理系统为例,涵盖会员和书籍资源的CRUD操作。通过迁移文件创建数据库表结构,使用Active Record类与数据库交互,并配置URL管理器和JSON请求响应。教程还包括借阅功能的实现,确保书籍借阅状态的正确管理。

一. RESTful API 概述

RESTful 架构自引入以来,通过将复杂应用程序拆解为更小、更专注的模块,并通过 RESTful 调用实现模块间通信,彻底改变了软件应用程序的设计方式。基于 Client-Server 架构,Web 客户端和移动应用可以通过统一的服务器端 API 进行交互,从而为用户提供一致的体验。

本教程将指导您使用 PHP 和 Yii2 框架构建一个 RESTful API。以“图书馆管理系统”为例,处理两个主要资源:会员书籍。通过该 API,您可以对这两类资源进行基本 CRUD 操作,同时实现会员借阅书籍的功能——当一本书被借阅后,其他用户将无法借阅同一本书。

在开始之前,建议您对 PHP 和 Yii 框架有一定了解。如对某些概念不熟悉,可参考官方文档获取更多信息。


二. 环境准备

在构建 API 前,请确保系统已安装以下组件:

  1. PHP(推荐 7.4 及以上)
  2. Composer(PHP 依赖管理工具)
  3. 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 中添加方法处理借阅请求,验证以下条件:

  1. book_id 必须存在数据库中
  2. 书籍未被其他用户借阅

如条件不满足,返回错误响应。


八. 总结

通过本教程,您已学会如何使用 PHP 和 Yii2 构建 RESTful API,包括:

  • 数据库设计与迁移
  • Active Record 模型创建
  • 控制器与路由配置
  • CRUD 操作与业务逻辑(借阅功能)

遵循面向对象编程和最佳实践,您可以构建易维护、高效的 API。

完整代码库可在 GitHub 获取,欢迎探索与改进。


原文链接: https://www.twilio.com/en-us/blog/build-restful-api-php-yii2