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

Yii2 使用 RESTful 写API接口 实例相关推荐

  1. yii2 提供接口给java_yii2写api接口步骤

    yii2写api接口步骤 Yii2如何实现RESTful风格的API(推荐:<YII教程> ) 1.建立单独的应用程序 为了增加程序的可维护性,易操作性,我们选择新建一套应用程序,这也是为 ...

  2. Widget API 接口实例演示(二) ——Telephony类和PIM类

    Widget API 接口实例演示(二) --Telephony类和PIM类 OPhone平台开发, 2010-01-05 15:03:07 标签 : 接口 API PIM Telephony 关于电 ...

  3. python实现简单的api接口-对Python实现简单的API接口实例讲解

    get方法 代码实现 # coding:utf-8 import json from urlparse import parse_qs from wsgiref.simple_server impor ...

  4. 简单python脚本实例-对Python实现简单的API接口实例讲解

    get方法 代码实现 # coding:utf-8 import json from urlparse import parse_qs from wsgiref.simple_server impor ...

  5. 分享一个强大的在线写API接口文档的工具showdoc

    网站地址:https://www.showdoc.cc 第一步:注册 第二步:填写注册信息,这里填写用户名和密码即可,用户名不可重复,注册登录后可以绑定邮箱. 也可以不注册查看示例决定要不要使用这个网 ...

  6. api接口 php_PHP关于API接口实例分享

    API就是操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的 API 而使操作系统去执行应用程序的命令(动作).本文主要和大家分享PHP关于API接口实例,希望能帮助到大家. PHP生成J ...

  7. php magento 开发,magento2 开发Api接口实例

    magento2 开发Api接口实例 新建一个模块 第一步先创建module.xml初始化模块 模块配置 – etc/module.xml 然后新建Registration 注册模块 – regist ...

  8. java restful接口开发实例_实战:基于Spring Boot快速开发RESTful风格API接口

    写在前面的话 这篇文章计划是在过年期间完成的,示例代码都写好了,结果亲戚来我家做客,文章没来得及写.已经很久没有更新文章了,小伙伴们,有没有想我啊.言归正传,下面开始,今天的话题. 目标 写一套符合规 ...

  9. SpringBoot RestFul风格API接口开发

    本文介绍在使用springBoot如何进行Restful Api接口的开发及相关注解已经参数传递如何处理. 一.概念: REST全称是Representational State Transfer,中 ...

最新文章

  1. UVA 12063 Zeros and Ones
  2. 如何在 C# 9 中使用record类型?
  3. 此 sqltransaction 已完成;它再也无法使用_win10笔记本自带office报错无法激活的解决方法...
  4. 互联网创业公司的传统思维
  5. C++设计模式-中介者模式
  6. Gartner发布2011十大关键技术
  7. 20140711_类的继承、派生、ACE框架、指针的问题、系统的问题
  8. 流媒体基本要点简述:如何在H264数据中获取PTS?
  9. 计算机硬件小游戏,小学信息技术第一册《认识计算机——计算机的硬件组成》教案...
  10. python程序狮_Python编程狮
  11. Java 菜鸟入门 | Java中的静态变量、实例变量、局部变量和成员变量
  12. 基于LPC2148的音频分析仪设计
  13. 2018.09.02【BZOJ2227】【ZJOI2011】看电影 (高精度)(组合数)
  14. 非常有用的制作logo的网站
  15. 11月全球浏览器份额之争:Chrome与Firefox均被蚕食
  16. ADAM A METHOD FOR STOCHASTIC OPTIMIZATION
  17. win10网页找不到服务器dns,教你win10打开网页提示无法解析服务器dns地址的解决教程。...
  18. TypeScript项目引用(project references)
  19. 批量修改文件名中的一部分,图文教程
  20. FPU (3) 指數

热门文章

  1. exls导入数据库 php_PHP读取excel文件并导入数据库
  2. Git初学札记(三)————创建Git版本库
  3. mosek 安装配置python_python安装、配置以及pyinstaller的安装、使用
  4. java 如何跟多个字符串比较_Stack Overflow上370万浏览量的一个问题:如何比较Java的字符串...
  5. stm32 PWM互补输出
  6. 网鼎杯2020php反序列化,2020-网鼎杯(青龙组)_Web题目 AreUserialz Writeup
  7. matlab 当已知两个矩阵满足分别一定条件时_程序继续执行,MATLAB程序设计基础
  8. layui下拉框的高度_LAYUI select 下拉框得高度
  9. android 教程概要,Android精通教程-第一节Android入门简介
  10. Java创建一个学生类