yii2的restful api路由实例详解

yii\rest\UrlRule

使用yii\rest\UrlRule来自动映射控制器的 restful 路由,简单快捷,缺点是必须得按规定好的方法名去写业务。

映射的规则如下,当然,你可以修改源码为你的习惯:

public $patterns = [
  'PUT,PATCH {id}' => 'update',
  'DELETE {id}' => 'delete',
  'GET,HEAD {id}' => 'view',
  'POST' => 'create',
  'GET,HEAD' => 'index',
  '{id}' => 'options',
  '' => 'options',
];

除了被限制了HTTP动词对应的方法名外,其他都很好用,比如pluralize是多么的优雅啊,可以自动解析单词的复数,laravel的话要一个个的去写,反而有些不方便了

'urlManager'  => [
  'enablePrettyUrl'   => true,
  'showScriptName'   => false,
  'enableStrictParsing' => true,
  'rules'        => [
    [
      'class'   => 'yii\rest\UrlRule',
      'controller' => [
        'v1/user',
        'v1/news',
        'routeAlias' => 'v1/box'
      ],
      'pluralize' => true
    ],
  ]
]

自定义路由

注意我路由里很刻意的用了复数模式,但很鸡肋,因为一些单词的复数并不是简单的加个 s 就可以了。

'urlManager'  => [
  'enablePrettyUrl'   => true,
  'showScriptName'   => false,
  'enableStrictParsing' => true,
  'rules'        => [
    // 利用 module 做个版本号也是可以的
    'GET <module:(v1|v2)>/<controller:\w+>s'         => '<module>/<controller>/index',
    'GET <module:(v1|v2)>/<controller:\w+>s/<uid:\d+>'    => '<module>/<controller>/view',
    'POST <module:(v1|v2)>/<controller:\w+>s'        => '<module>/<controller>/create',
    'PUT,PATCH <module:(v1|v2)>/<controller:\w+>s/<uid:\d+>' => '<module>/<controller>/update',
    'DELETE <module:(v1|v2)>/<controller:\w+>s/<uid:\d+>'  => '<module>/<controller>/delete',
    'OPTIONS <module:(v1|v2)>/<controller:\w+>s'       => '<module>/<controller>/options',

    '<controller:\w+>/<action:\w+>'       => '<controller>/<action>',// normal
    '<module:\w+>/<controller:\w+>/<action:\w+>' => '<module>/<controller>/<action>',// module
    '/'                     => 'site/default',// default route
  ]
]

当然,这种高度动态的路由也可以写的像laravel一样半静态。

'GET v1/children'         => 'v1/child/index',
'GET v1/children/<uid:\d+>'    => 'v1/child/view',
'POST v1/children'        => 'v1/child/create',
'PUT,PATCH v1/children/<uid:\d+>' => 'v1/child/update',
'DELETE v1/children/<uid:\d+>'  => 'v1/child/delete',
'OPTIONS v1/children'       => 'v1/child/options',

如同laravel的如下

Route::get("/v1/children", "ChildController@index");
Route::post("/v1/children", "ChildController@create");
Route::put("/v1/children/{uid}", "ChildController@update");
Route::patch("/v1/children/{uid}", "ChildController@update");
Route::delete("/v1/children/{uid}", "ChildController@delete");
Route::options("/v1/children", "ChildController@options");

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Yii2框架制作RESTful风格的API快速入门教程

    先给大家说下什么是REST restful REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移. 它首次出现在2000年Roy Fielding的博士论文中,Roy Fielding是HTTP规范的主要编写者之一. 他在论文中提到:"我这篇文章的写作目的,就是想在符合架构原理的前提下,理解和评估以网络为基础的应用软件的架构设计,得到一个功能强.性能好.适宜通信的架构.REST指的是一组架构约束条件和原则." 如

  • Yii2框架RESTful API 格式化响应,授权认证和速率限制三部分详解

    之前写过一篇Yii2框架制作RESTful风格的API快速入门教程,今天接着来探究一下Yii2 RESTful的格式化响应,授权认证和速率限制三个部分 一.目录结构 先列出需要改动的文件.目录如下: web ├─ common │ └─ models │ └ User.php └─ frontend ├─ config │ └ main.php └─ controllers └ BookController.php 二.格式化响应 Yii2 RESTful支持JSON和XML格式,如果想指定返回

  • Yii2中Restful API原理实例分析

    本文实例分析了Yii2中Restful API原理.分享给大家供大家参考,具体如下: Yii2 有个很重要的特性是对 Restful API的默认支持, 通过短短的几个配置就可以实现简单的对现有Model的RESTful API 这里通过分析rest部分源码,简单剖析下yii2 实现 restful 的原理,并通过一些定制实现 对 关联模型的RESTful api 操作. ~ 代表 extends from 的关系 | | rest/ | | |-Action.php ~ `\yii\base\

  • Yii2 RESTful中api的使用及开发实例详解

    什么是RESTful风格的API 对于各种客户端设备与服务端的通信,我们往往都通过API为客户端提供数据,提供某种资源.关于RESTful的概念,一查一大推,一两句也解释不清,姑且先按照我们通俗的理解:在众多风格.众多原则的API中,RESTful就是一套比较优秀的接口调用方式. Yii2如何实现RESTful风格的API 1.建立单独的应用程序 为了增加程序的可维护性,易操作性,我们选择新建一套应用程序,这也是为了和前台应用.后台应用区分开操作.有些人要嚷嚷了,为啥非得单独搞一套呢?如果你就单

  • Yii2.0 RESTful API 基础配置教程详解

    最近在做Yii2.0 RESTful API功能,找了好久的资料,才找到这类的教程,感谢该作者,以下内容根据我的项目实际情况做了一定的修改. 安装yii2.0 安装 Composer 后,您可以通过在 Web 可访问的文件夹下运行以下命令来 安装Yii应用程序模板: composer create-project --prefer-dist yiisoft/yii2-app-basic basic 初始化高级模板 cd advanced ./init 输入"./init"后会出现以下内

  • yii2项目实战之restful api授权验证详解

    前言 什么是restful风格的api呢?我们之前有写过大篇的文章来介绍其概念以及基本操作. 既然写过了,那今天是要说点什么吗? 这篇文章主要针对实际场景中api的部署来写. 我们今天就来大大的侃侃那些年api遇到的授权验证问题!独家干活,如果看完有所受益,记得不要忘记给我点赞哦. 业务分析 我们先来了解一下整个逻辑 用户在客户端填写登录表单 用户提交表单,客户端请求登录接口login 服务端校验用户的帐号密码,并返回一个有效的token给客户端 客户端拿到用户的token,将之存储在客户端比如

  • yii2的restful api路由实例详解

    yii\rest\UrlRule 使用yii\rest\UrlRule来自动映射控制器的 restful 路由,简单快捷,缺点是必须得按规定好的方法名去写业务. 映射的规则如下,当然,你可以修改源码为你的习惯: public $patterns = [ 'PUT,PATCH {id}' => 'update', 'DELETE {id}' => 'delete', 'GET,HEAD {id}' => 'view', 'POST' => 'create', 'GET,HEAD' =

  • Python进行Restful API开发实例详解

    目录 1. Flask-RESTful 2. fastapi + nacos服务注册 2.1 post 2.2 get请求接收list参数 2.3 请求URL进行文件下载 2.4 获取Request Headers的Authorization,并使用JWT解析 1. Flask-RESTful 1.安装pip依赖 [root@bigdata001 ~]# [root@bigdata001 ~]# pip3 install flask [root@bigdata001 ~]# [root@bigd

  • python+requests+unittest API接口测试实例(详解)

    我在网上查找了下接口测试相关的资料,大都重点是以数据驱动的形式,将用例维护在文本或表格中,而没有说明怎么样去生成想要的用例, 问题: 测试接口时,比如参数a,b,c,我要先测a参数,有(不传,为空,整形,浮点,字符串,object,过短,超长,sql注入)这些情况,其中一种情况就是一条用例,同时要保证b,c的正确,确保a的测试不受b,c参数的错误影响 解决思路: 符合接口规范的参数可以手动去填写,或者准备在代码库中.那些不符合规范的参数(不传,为空,整形,浮点,字符串,object,过短,超长,

  • React18 中的 Suspense API使用实例详解

    目录 什么是新的 ReactJS Suspense API,什么时候应该使用它? 什么是Suspense API? 什么是 transition API? 最后 什么是新的 ReactJS Suspense API,什么时候应该使用它? 何时使用:当组件开始变大并且您在同一页面上有许多组件时,您可能希望开始优化下载到客户端浏览器的方式和时间. 为此,React 为您提供了lazyAPI,它允许您将组件标记为lazy,这意味着被lazy包裹的组件,将会在第一次真正使用时被加载,而不是页面初始化的时

  • react框架next.js学习之API 路由篇详解

    目录 正文 使用方式 API 路由匹配 API 处理 API 配置 边缘计算支持 自定义 API 注意点 总结 正文 next.js 作为最热门的 react 框架,不过这么久了好像国内使用率一直不太高.最近在研究做个小项目正好做下笔记,有兴趣的可以一起来学习. next.js 首页标榜的 12 个特性之一就是 API routes,简单的说就是可以 next.js 直接写 node 代码作为后端服务来运行.因此我们可以直接使用 next.js 直接维护一个全栈项目,听起来很香的样子. 使用方式

  • Yii2框架数据验证操作实例详解

    本文实例讲述了Yii2框架数据验证操作.分享给大家供大家参考,具体如下: 一.场景 什么情况下需要使用场景呢?当一个模型需要在不同情境中使用时,若不同情境下需要的数据表字段和数据验证规则有所不同,则需要定义多个场景来区分不同使用情境.例如,用户注册的时候需要填写email,登录的时候则不需要,这时就需要定义两个不同场景加以区分. 默认情况下模型的场景是由rules()方法申明的验证规则中使用到的场景决定的,也可以通过覆盖scenarios()方法来更具体地定义模型的所有场景,例如: public

  • Spring MVC集成springfox-swagger2构建restful API的方法详解

    前言 在集成springfox-swagger2之前,我也尝试着集成了swagger-springmvc,方式差不多,但是swagger-springmvc相对麻烦一点,因为要把它的静态文件copy到自己的项目中.所以还是用新版本的. 至于两者有什么不同,为什么进行版本变更请参见官方说明文档 方法如下 这里先写下需要的pom.xml配置(我引用的2.4.0,相对稳定) <dependency> <groupId>io.springfox</groupId> <ar

  • Java Restful API的拦截详解

    目录 一.Restful API的拦截三种方式 二.过滤器(Filter)的演示示例(springboot项目) 三.Filter过滤器特点 四.Filter过滤器.Interceptor拦截器 .Aspect切面起作用的顺序 五.当控制层(即Controller层)的方法抛异常时,Filter过滤器.Interceptor拦截器 .Aspect切面 抛异常的顺序 总结 一.Restful API的拦截三种方式 过滤器(Filter) 拦截器(Interceptor) 切片(Aspect) 二.

随机推荐