0

0

Yii2 RESTfulAPI怎么开发_Yii2框架RESTfulAPI开发教程

雪夜

雪夜

发布时间:2025-10-01 18:56:02

|

995人浏览过

|

来源于php中文网

原创

答案:开发Yii2的RESTful API需配置URL美化和路由规则,启用JsonParser支持JSON数据提交,使用UrlRule生成标准REST路由;创建继承yii\rest\ActiveController的控制器并指定$modelClass,即可自动实现用户资源的增删改查操作;通过重写behaviors()和actions()方法可自定义权限控制与数据提供方式;Yii2默认返回JSON格式响应,可通过response组件设置返回数据结构,并结合异常捕获返回标准化错误信息;该机制可扩展至其他资源如产品、订单等。

yii2 restfulapi怎么开发_yii2框架restfulapi开发教程

开发Yii2的RESTful API并不复杂,只要理解其路由机制、控制器结构和数据格式处理方式。下面是一个实用的开发流程,帮助你快速搭建一个标准的RESTful接口服务。

配置URL美化和路由规则

为了让API地址更简洁,比如 /api/users 而不是 /index.php?r=api%2Fuser7>,需要启用URL美化(Pretty URL)并设置规则。

config/web.php 中配置components的request和urlManager:

'components' => [
    'request' => [
        'parsers' => [
            'application/json' => 'yii\web\JsonParser',
        ]
    ],
    'urlManager' => [
        'enablePrettyUrl' => true,
        'enableStrictParsing' => false,
        'showScriptName' => false,
        'rules' => [
            ['class' => 'yii\rest\UrlRule', 'controller' => 'api/user'],
        ],
    ],
],

说明:

  • JsonParser 允许POST/PUT请求使用JSON格式提交数据
  • UrlRule 自动为controller生成标准REST路由,如GET /api/users → index,POST /api/users → create

创建REST控制器

继承 yii\rest\ActiveController 可以快速实现资源操作。假设我们有一个User模型。

创建文件 controllers/ApiController.phpcontrollers/UserController.php

// controllers/ApiController.php
class ApiController extends \yii\rest\Controller
{
    // 可以放公共逻辑或认证检查
}

// controllers/UserController.php
class UserController extends \yii\rest\ActiveController
{
    public $modelClass = 'app\models\User';
}

这样就自动支持以下操作:

  • GET /api/users   → 列出所有用户
  • GET /api/users/1   → 获取ID为1的用户
  • POST /api/users   → 创建新用户
  • PUT /api/users/1   → 更新ID为1的用户
  • DELETE /api/users/1   → 删除用户

自定义行为和权限控制

如果想修改默认行为或添加权限验证,可以重写actions()或behaviors()方法。

奇布塔
奇布塔

基于AI生成技术的一站式有声绘本创作平台

下载

public function behaviors()
{
    $behaviors = parent::behaviors();
    // 移除不需要的认证(开发阶段)
    unset($behaviors['authenticator']);
    
    return $behaviors;
}

也可以只允许特定动作:

public function actions()
{
    $actions = parent::actions();
    $actions['index']['prepareDataProvider'] = [$this, 'prepareDataProvider'];
    return $actions;
}

public function prepareDataProvider()
{
    $model = new User();
    return new \yii\data\ActiveDataProvider([
        'query' => $model->find(),
        'pagination' => ['pageSize' => 10],
    ]);
}

返回格式与错误处理

Yii2默认使用JSON格式输出。可通过response组件控制返回内容。

例如在控制器中手动返回数据:

\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
return ['status' => 'success', 'data' => $data];

捕获异常并返回标准错误:

try {
    // 业务逻辑
} catch (\Exception $e) {
    return ['error' => $e->getMessage()];
}

基本上就这些。按照这个结构,你可以扩展多个资源控制器,比如ProductController、OrderController等,每个都对应一套REST接口。关键是理解ActiveController的自动化机制和UrlRule的映射逻辑。调试时打开日志或用Postman测试各种请求类型,确保状态码和数据正确。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
PHP API接口开发与RESTful实践
PHP API接口开发与RESTful实践

本专题聚焦 PHP在API接口开发中的应用,系统讲解 RESTful 架构设计原则、路由处理、请求参数解析、JSON数据返回、身份验证(Token/JWT)、跨域处理以及接口调试与异常处理。通过实战案例(如用户管理系统、商品信息接口服务),帮助开发者掌握 PHP构建高效、可维护的RESTful API服务能力。

155

2025.11.26

json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

418

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

535

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

311

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

77

2025.09.10

软件测试常用工具
软件测试常用工具

软件测试常用工具有Selenium、JUnit、Appium、JMeter、LoadRunner、Postman、TestNG、LoadUI、SoapUI、Cucumber和Robot Framework等等。测试人员可以根据具体的测试需求和技术栈选择适合的工具,提高测试效率和准确性 。

439

2023.10.13

treenode的用法
treenode的用法

​在计算机编程领域,TreeNode是一种常见的数据结构,通常用于构建树形结构。在不同的编程语言中,TreeNode可能有不同的实现方式和用法,通常用于表示树的节点信息。更多关于treenode相关问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

538

2023.12.01

C++ 高效算法与数据结构
C++ 高效算法与数据结构

本专题讲解 C++ 中常用算法与数据结构的实现与优化,涵盖排序算法(快速排序、归并排序)、查找算法、图算法、动态规划、贪心算法等,并结合实际案例分析如何选择最优算法来提高程序效率。通过深入理解数据结构(链表、树、堆、哈希表等),帮助开发者提升 在复杂应用中的算法设计与性能优化能力。

17

2025.12.22

php中文乱码如何解决
php中文乱码如何解决

本文整理了php中文乱码如何解决及解决方法,阅读节专题下面的文章了解更多详细内容。

1

2026.01.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 9.8万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.2万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号