restfulJ介绍和yiii2框架如何配置restful

                                                RESTful介绍和yii2中RESTful如何配置

  REST的名称"表现层状态转化"中,省略了主语。"表现层"其实指的是"资源"(Resources)的"表现层"。
从学术上来讲:
   RESTful提出的初衷,是考虑到长期以来,软件研究主要关注软件设计的分类、设计方法的演化,
很少客观地评估不同的设计选择对系统行为的影响。而相反地,网络研究主要关注系统之间通信行为的细节、
如何改进特定通信机制的表现,常常忽视了一个事实,那就是改变应用程序的互动风格比改变互动协议,对整体表现有更大的影响。
作者的设想是在符合架构原理的前提下,理解和评估以网络为基础的应用软件的架构设计,得到一个功能强、性能好、适宜通信的架构(这段话,还不太理解!)

       什么是RESTful呢?
   通俗的理解就是,RESTful就是一个逻辑数据API,一个逻辑数据接口。我们可以通过RESTful这一接口,实现一个功能强大,性能优越的系统架构,为其他终端设备上面的应用程序提供相关的逻辑数据操作。那什么是逻辑数据呢? 逻辑数据就是从逻辑上,从实际意义上抽象数据而得到的,你比如在网上买一张车票,对于票这个数据而言。它在数据库中是用几个字段 票的id 票车程 票价格 开车时间 来表示的。但我们一般将其抽象成一个一个简单的名词 车票  一旦操作车票自然就是在后台操作这几个字段了。是不是有一点像对象。
  (1)在RESTful中所有的逻辑数据可以被唯一的url所定位,通过这个url就能获得这个逻辑数据也就是说只要有对应                的url定位标识符,就可以确定对应的逻辑数据。
  (2)所有的逻辑数据通过http协议的动作进行操作,如GET POST PUT DELETE

     设计标准
   目前尚未形成严格统一的RESTful标准,但是公认的有这么几条原则
1.每一个URI代表一种逻辑资源
2.API应该对程序员友好,url简便,有意义。并且在浏览器地址栏容易输入。即必须美化路径。
3.客户端通过HTTP动词,对服务器端逻辑资源进行操作
4.应该具有足够的灵活性来支持上层ui.(API的就是后台程序员的UI,和其他UI一样,你必须仔细考虑它的用户体验!)
5.逻辑资源应该是名词而不是动词,因为对这个逻辑数据的操作都包含在了http动词中了。

           举几个url访问的例子
情景:  向服务器查询车票                     GET /tickets
           向服务器查询具体车票              GET /tickets?tickets_id=1
  向服务器购买具体车票              POST /myTicket?tickets_id=1
  向服务器退票                            DELETE /myTicket?tickets_id=1


 yii2框架中的RESTful
1.简介:
     Yii 提供了一整套用来简化实现RESTful风格的Web Service服务的 API
 Yii 支持以下关于 RESTful 风格的 API
  支持 Active Record 类的通用API的快速原型
  涉及的响应格式(在默认情况下支持 JSON 和 XML)
  支持可选输出字段的定制对象序列化
  适当的格式的数据采集和验证错误
  支持 HATEOAS
  有适当HTTP动词检查的高效的路由
  内置OPTIONS和HEAD动词的支持
  认证和授权
  数据缓存和HTTP缓存
  速率限制


       2.在yii2中配置RESTful
  (1)在basic/web下添加.htaccess文件
  注意该文件没有文件名,或者说.htaccess就是他的文件名,这种形式的文件正常情况,在windows下是无法生成的,所以需要一些特殊的办法,在此稍微列举一下。
           a.使用DOS命令:使用屏幕编辑命令copy con .htaccess后回车,输入内容,最后按下ctrl+z结束编辑,
             就成功生成了.htaccess;
           b.直接通过文本编辑工具保存,例如记事本,ultraEdit等等,不过保存的时候选择所有文件就可以了
           c.打开Windows的记事本---“文件->另存为”---在另存为的“保存类型”下拉选单中选取“所有文件”类型---在“文件名”中输入.htaccess---保存
 .htaccess的作用主要是,由于开启urlmanager后访问url不会交给index.php。所以需要.htaccess 根据访问url,来分工(个人见解),当一个访问过来,.htaccess文件分析访问url中的文件或目录是否存在,要是存在直接将访问的目的文件交付,要是不存在,交付给index.php处理。  .htaccess文件内容如下:

[plain]  view plain  copy
  1. RewriteEngine on  
  2.  # If a directory or a file exists, use it directly  
  3.  RewriteCond %{REQUEST_FILENAME} !-f  
  4.  RewriteCond %{REQUEST_FILENAME} !-d  
  5.  # Otherwise forward it to index.php  
  6.  RewriteRule . index.php  
      (2)配置urlManager:
      接着我们需要在config/web.php中配置urlManager,为什么要配置这个呢?之前basic都是将其注释掉的?
           原因在于之前我们直接通过url访问某个控制器下的函数格式是:localhost/basic/web/index.php?r=controllerXX/actionXX  这种访问形式很繁琐,不易检错,增加代码的长度,模糊。urlmanager正是来解决这种问题的,即管理访问url的标准格式,使用之后我们可以省去index.php以及将路径化。新的访问格式如下:localhost/basic/web/controllerXX/actionXX。在本urlmanager中我们设置rules的class=>yii\rest\UrlRule 是因为我们需要启用yii2中RESTful,同时还必须指定那几个控制器是符合RESTful访问的控制器。切记,urlManager是写在components[  ]里面的。内容如下:

[php]  view plain  copy
  1. 'urlManager' => [  
  2.       'enablePrettyUrl' => true,//是否优化url,即路径化1  
  3.       'showScriptName' => false,//是否省略index.php  
  4.       'enableStrictParsing' => false,//是否严格解析请求,在enablePrettyUrl使用时才起作用  
  5.       'rules' => [  
  6.         [       
  7.   'class' => 'yii\rest\UrlRule'//这一句是必须添加的,因为urlManager类中默认是  
  8.   'controller' => ['v1/table','v1/login'],//设置RESTful的api,设置module id为v1下的控制器table,login为api  
  9.         ],  
  10.       ],  
  11. ],   
特别提示:在本例中是将一个module模块 v1下的两个控制器table login设置为RESTful api  在实际运用中,可以根据实际情况设置作为RESTful api的控制器。

       (3)配置启用json输入:

在config/web.php里的request=>[ ]数组添加json解析类 parsers=>[ ]

[php]  view plain  copy
  1. 'request' => [  
  2.            'cookieValidationKey' => '098udfhfj',  
  3.            'parsers' => [  
  4.                   'application/json' => 'yii\web\JsonParser',  
  5.                 ]  
  6.              ]  
 要是少了parsers=>[ ],RESTful API将仅可以分辨 application/x-www-form-urlencoded 和 multipart/form-data 输入格式。添加了后便能识别application/json格式。


至此yii2中RESTful的配置就完后了。下文将讲解如何写RESTful 的api 控制器和如何测试调用等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值