Yii2 使用 RESTful 写API接口 实例

Yii2 使用 RESTful?其实 Yii2 框架本身就对 RESTful 是友好支持的,具体可以看官方文档(http://www.yiichina.com/doc/guide/2.0/rest-quick-start),或者去看源码,都是可以的

注意: 我们使用resTful的同时,需要借助于测试工具进行地址访问,例如: 谷歌的PostMAN,火狐的HttpRequester工具来访问
创建一个控制器  我的工作目录如图所示 (首先, 参照下面的目录图片,可以看出,我创建了两个大的文件夹,v1,v2,目的是测试访问不同版本的接口)下面以v2中的文件为例:创建一个控制器类 api\modules\v2\UserController 如下,
[php] view plain copy在CODE上查看代码片派生到我的代码片namespace api\modules\v2\controllers;  use yii\rest\ActiveController;  class UserController extends ActiveController  {  public $modelClass = 'api\modules\v2\models\user\UserBaseInfo';  }  控制器类扩展自 yii\rest\ActiveController。通过指定 yii\rest\ActiveController::modelClass作为
api\modules\v2\models\user\UserBaseInfo, 控制器就能知道使用哪个模型去获取和处理数据。配置URL规则修改有关在应用程序配置的urlManager组件的配置:[php] view plain copy在CODE上查看代码片派生到我的代码片'urlManager' => [  'enablePrettyUrl' => true,  'enableStrictParsing' => true,  'showScriptName' => false,  'rules' => [  ['class' => 'yii\rest\UrlRule', 'controller' => 'user'],    ],  ]  说明:  a): 上面的配置主要是为user控制器增加一个 URL 规则。这样,用户的数据就能通过美化的 URL 和有意义的 http 动词进行访问和操作。b): 上面是没有加上版本的url配置,至于关于版本我将以新的一篇来说明.配置另外的:
[php] view plain copy在CODE上查看代码片派生到我的代码片'controllerNamespace' => 'api\controllers',  'components' => [  'user' => [  'identityClass' => 'api\modules\v1\models\oauth\AccessToken',  'enableAutoLogin' => true,  'enableSession' => false,  'loginUrl' => null  ],  尝试随着以上所做的最小的努力,你已经完成了创建用于访问用户数据的 RESTful 风格的 API。你所创建的 API 包括:相比于URL管理的Web应用程序,上述主要的新东西是通过RESTful API请求yii\rest\UrlRule。这个特殊的URL规则类将会建立一整套子URL规则来支持路由和URL创建的指定的控制器。例如, 上面的代码中是大致按照下面的规则:['PUT,PATCH users/<id>' => 'user/update','DELETE users/<id>' => 'user/delete','GET,HEAD users/<id>' => 'user/view','POST users' => 'user/create','GET,HEAD users' => 'user/index','users/<id>' => 'user/options','users' => 'user/options',
]GET /users: 逐页列出所有用户HEAD /users: 显示用户列表的概要信息POST /users: 创建一个新用户GET /users/123: 返回用户 123 的详细信息HEAD /users/123: 显示用户 123 的概述信息PATCH /users/123 and PUT /users/123: 更新用户123DELETE /users/123: 删除用户123OPTIONS /users: 显示关于末端 /users 支持的动词OPTIONS /users/123: 显示有关末端 /users/123 支持的动词补充:Yii 将在末端使用的控制器的名称自动变为复数。(译注:个人感觉这里应该变为注意)经过上面的配置后,你会看到你的控制类继承的是yii\rest\ActiveController,如果你进这个文件后,你会看到下面这些方法:[php] view plain copy在CODE上查看代码片派生到我的代码片public function actions()  {  return [  'index' => [  'class' => 'yii\rest\IndexAction',  'modelClass' => $this->modelClass,  'checkAccess' => [$this, 'checkAccess'],  ],  'view' => [  'class' => 'yii\rest\ViewAction',  'modelClass' => $this->modelClass,  'checkAccess' => [$this, 'checkAccess'],  ],  'create' => [  'class' => 'yii\rest\CreateAction',  'modelClass' => $this->modelClass,  'checkAccess' => [$this, 'checkAccess'],  'scenario' => $this->createScenario,  ],  'update' => [  'class' => 'yii\rest\UpdateAction',  'modelClass' => $this->modelClass,  'checkAccess' => [$this, 'checkAccess'],  'scenario' => $this->updateScenario,  ],  'delete' => [  'class' => 'yii\rest\DeleteAction',  'modelClass' => $this->modelClass,  'checkAccess' => [$this, 'checkAccess'],  ],  'options' => [  'class' => 'yii\rest\OptionsAction',  ],  ];  }  /** * @inheritdoc */  protected function verbs()  {  return [  'index' => ['GET', 'HEAD'],       'view' => ['GET', 'HEAD'],        'create' => ['POST'],  'update' => ['PUT', 'PATCH'],  'delete' => ['DELETE'],  ];  }  从上面的方法我们可以知道,如果在你使用yii框架自带的方法时,它默认有create, delete, update, index, view等的一下方法所创建的 API 包括:GET /users: 逐页列出所有用户POST /users: 创建一个新用户GET /users/123: 返回用户 123 的详细信息PATCH /users/123 and PUT /users/123: 更新用户123DELETE /users/123: 删除用户123但是如果你要是不想用他的某些方法,我们可以通过下面的方法来自己覆盖对应的方法例如:
[php] view plain copy在CODE上查看代码片派生到我的代码片public function actions()  {  $actions = parent::actions();  // 注销系统自带的实现方法  unset($actions['index']);  //unset($actions['create']);  //unset($actions['update']);  //unset($actions['delete']);  return $actions;  }  //覆盖父类的actionIndex方法,并进行重写  public function actionIndex()  {  //获取用户所有信息  
        ......  }  对于其他的方法同上....于是我们就可以通过方法地址获取想要的数据:GET  http://www.api.com/users

 

转载于:https://www.cnblogs.com/zhangtianle/p/8467315.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571155.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php elements,wd elements se和wd elements的区别是什么

区别&#xff1a;1、WD Elements SE有两个USB3.0接口&#xff1b;而WD Elements有一个USB3.0接口&#xff0c;一个USB2.0接口。2、WD Elements SE配置有数据加密功能&#xff1b;而WD Elements不具备存储数据加密功能。本文操作环境&#xff1a;windows10系统、thinkpad t480电…

Blog建设好了,好好看φ(゜▽゜*)♪

来cnblogs写博果然没错&#xff0c;不枉费我几个小时&#xff0c;最后出来的界面还是很好看的。当然了需要一点前端基础&#xff0c;这样改起来才顺心顺手。 转载于:https://www.cnblogs.com/icequarze/p/8468483.html

java二维数组遍历排序,实现二维数组的按次序排序!!!

package com.huaxia.java2se;import java.util.Arrays;public class Array{ static int c0;static int a[][]new int[4][4];int ii0;/** 单行的排序方法由大到小*/public static void Arraysinglesort(int a[][]){int i, j,k;for( i0;ifor(j0;jint temp;for(k0;kwhile(a[i][k]}…

【热修复】Andfix源码分析

转载请标注来源&#xff1a;http://www.cnblogs.com/charles04/p/8471301.html Andfix源码分析 0、目录 背景介绍源码分析方案评价总结与思考参考文献1、背景介绍 热修复技术是移动端领域近年非常活跃的一项新技术&#xff0c;通过热修复技术可以在不发布应用市场版本&#xff…

matlab求心率,心电图QRS波检测(计算心跳次数)

YURA2021-2-18 9:54:53谢谢&#xff01;&#xff01;&#xff01;yangaichimantou2021-1-6 21:01:21谢谢分享楼主llyy12332020-12-21 18:39:55感谢楼主分享songxin2020-12-16 21:55:38感谢楼主分享4444_X2020-9-14 21:25:27感谢楼主分享4444_X2020-9-14 21:25:26感谢楼主分享44…

已知矩阵 matlab,在MATLAB中,已知矩阵A,那么A(:,2:end)表示

摘要&#xff1a;已知供输工方、表示添资料准加剂、加及标应提原料有关的()的出国法等使用&#xff0c;品”“进办理报检时口食。已知信息系统模型不包逻辑括(。...已知信息系统构化中的结方法设计&#xff0c;矩阵细设和详总体计两阶段一般分为设计&#xff0c;总体主要建立其…

虚拟域名配置

1、进入 C:\Windows\System32\drivers\etc 这个文件夹&#xff0c;找到hosts文件&#xff0c;做相应配置&#xff1b;比如:配置school.com # localhost name resolution is handled within DNS itself. 127.0.0.1 school.com# ::1 localhost2、找到 apach…

文件源码读取 php伪协议,include(文件包含漏洞,php伪协议)

点击tips查看元素&#xff0c;也并没有有用的信息&#xff0c;联想到题目,include想起了文件包含漏洞。构造payload?file/../../../../../../flag.php没有返回东西。看完wq学到了一个新姿势&#xff1a;php伪代码构造payload?filephp://filter/readconvert.base64-encode/res…

vue 中 created 和 mounted 钩子生命周期 问题

正如前面一篇博客中遇到的钩子生命周期问题 &#xff0c;如果对基本的原理不清楚 就很难弄懂 这个问题 到底是什么原因造成的。所以今天我们就来简单的研究下 这两个钩子到底是个啥意思 created 钩子 mounted 钩子 我不想写了 可以参考这个 说的也挺明白的 https://segmentfa…

php beast linux安装,windows centos php-beast 安装

https://github.com/imaben/php-beast-binarieswindows下 可以直接在这里下载dll根据自己的php版本 还有是不是线程安全的 来选择下载对应的放到对应的扩展目录 中在配置文件 php.ini中加入扩展配置放到对应的扩展目录 中在配置文件 php.ini中加入扩展配置extensionphp_beast_…

Echarts自定义折线图例,增加选中功能

用Echarts图表开发&#xff0c;原本的Echarts图例不一定能满足我们的视觉要求。 下面是Echarts 折线图自定义图例&#xff0c;图例checked选中&#xff0c;相应的折线线条会随之checked&#xff0c;其余未选中的图例对应的折线opacity会降低&#xff0c;&#xff08;柱状图&…

php产品效果图,jQuery_基于JQuery制作的产品广告效果,效果图.如下: 动画效果介绍 - phpStudy...

基于JQuery制作的产品广告效果效果图.如下&#xff1a;动画效果介绍&#xff1a;这组广告效果是打开页面后图片会自动播放&#xff0c;从1-5共计5张图片&#xff0c;如果属标放到右下角的1、2、3、4、5列表上&#xff0c;可以自由进行切换到自己想看的图片上去。图片切换是由下…

python之函数基础

函数是对程序逻辑进行结构化或过程化的一种编程方法。能将整块代码巧妙地隔离成易于管理 的小块&#xff0c;把重复代码放到函数中而不是进行大量的拷贝--这样既能节省空间&#xff0c;也 有助于保持一致性&#xff0c;因为你只需改变单个的拷贝而无须去寻找再修改大量复制代码…

Python on the Way, Day1 - Python基础1

一、 Python介绍 python的创始人为吉多范罗苏姆&#xff08;Guido van Rossum&#xff09;。1989年的圣诞节期间&#xff0c;吉多范罗苏姆为了在阿姆斯特丹打发时间&#xff0c;决心开发一个新的脚本解释程序&#xff0c;作为ABC语言的一种继承 Python可以应用于众多领域&#…

java发送QQ群邮件,简单两步使用node发送qq邮件

node发送邮件非常简单,这里只做qq的演示,你可以举一反三.使用nodemailer包let transporter nodemailer.createTransport({// 使用qq发送邮件// 更多请查看支持列表&#xff1a;https://nodemailer.com/smtp/well-known/service: qq,port: 465, // SMTP 端口secureConnection: …

python数据显示为什么只能显示最后一个变量,Python变量和简单数据类型,之,的

变量介绍。变量就是代表某个数据(值)的名称&#xff0c;简单点说变量就是给数据起个名字。变量的特点。1)变量是计算机内存中的一块区域&#xff0c;变量可以存储规定范围内的值&#xff0c;而且值是可变的。2)在创建变量时会在内存中开辟一个空间。基于变量的数据类型&#xf…

【BZOJ2095】【POI2010】Bridge 网络流

题目大意 ​  给你一个无向图&#xff0c;每条边的两个方向的边权可能不同。要求找出一条欧拉回路使得路径上的边权的最大值最小。无解输出"NIE"。   \(2\leq n\leq 1000,1\leq m\leq 2000\) 题解 ​  我们先二分答案\(ans\)&#xff0c;把边权大于\(ans\)的边…

space index.php 7-14,SpacePack高效部署PHP生产环境

SpacePack 基于 Docker 为了快速部署 PHP 生产环境而产生的项目&#xff0c;它包含了一般项目中常用的组件&#xff0c;能够在最短的时间内产生一个完善并且优化过的 PHP 生产环境。容器版本SpacePack 默认包含了 OpenResty 1.13、PHP 7.2、MariaDB 10.3、Memcached 1.5、Redis…

【XSY2469】graph 分治 并查集

题目大意 给你一张\(n\)个点\(m\)条边的无向图&#xff0c;问删去每个点后&#xff0c;原图是不是二分图。 \(n,m\leq 100000\) 题解 一个图是二分图\(\Longleftrightarrow\)该图不存在奇环 可以用并查集&#xff0c;维护每个点到根的距离 如果删除\(x\)点&#xff0c;就要把所…

云播自带解析php,使用PHP SDK,web端的华为云视频点播接入,加密视频播放的坑与解决方案-全代码篇...

下载phpdemo算是跑起来了&#xff0c;现在就要考虑租户系统如自身验证token的问题了。1、先介绍下我的代码目录2、文件执行的时序图和流程图2、代码demotest.phpfunction curl_request($url,$post,$cookie, $returnCookie0){$curl curl_init();curl_setopt($curl, CURLOPT_URL…