搜索
系统检测到您的用户名不符合规范:

TP 3.2 Rest使用

浏览:15014 发布日期:2013年12月21日 分类:用法示例 关键字: thinkphp 3.2 rest
thinkphp 3.2 rest 的操作
本人是做终端开发的,以前没有搞过php,因为有需求看了看,thinkphp这周刚开始看,因为来的时候下载的最新版,终端开发php作为后台大多是接口,所以想学习使用下tp的rest,看了几个相关的帖子都是讲的老版本的,extent下面有这个,然后有个开关开启就行了,又发现怎么开启模式后整个程序都变成了rest模式,没有测试,反正下了新版本中开启了无效,看了下源码没有这块的逻辑。

昨天发现git提交中加上了RestController,于是自己折腾了下,貌似调通了,直接继承的,这样比较灵活,想某个模块下面那个controller实现rest模式都可以。由于还没有深入看才点皮毛,也不知道用法对不对,说的不对的地方大家多指正。

1、下载最新的框架,最好是git上面的开发版本,不要3.2那个正式版,貌似RestController还没有加进去。
.htaccess 文件随便以前的或者one think里面复制一个过来吧。这样输入网址的时候可以免掉index.php 。环境配置之类的就不说了,运行下。程序下面application就有。到application home controller目录 新建一个文件。
内容如下
//InfoController.class.php <?php
namespace Home\Controller;
use Think\Controller\RestController;
class InfoController extends RestController {

//default is json
public function read_json(){
echo "read_default_get_json";
}

//get
public function read_get_json(){
echo "read_get_json";
}

//delete
public function read_delete_json(){
echo "read_delete_json";
}

//put/update
public function read_put_json(){
echo "read_put_json";
}

//get
public function read_post_json(){
echo "read_post_json";
}

//custom
public function read_custom_json(){
echo "read_custom_json";
}
}
这个时候用ie 等浏览器访问是不行的,会访问出现403错误的,至于为什么可以看下源码RestController中的call方法,会根据 请求端的 请求头 接受类型或者设置好的默认类型等进行一系列的拼接方法,如果拼接的方法存在就调用,不存在就(_ERROR_ACTION_)403了。

浏览器中访问的话,call方法大概会适配出来的访问action为read_get_html 因为我上面没有实现这个方法,所以访问会失败。

所以这个时候用curl去请求。windows下面curl没有的话去安装一个吧。
然后开始访问如下:



我的url是本地host中做了个映射,也可以直接127.0.0.1这个就看自己的配置了。
可见通过请求类型的不同访问到了我们的controller中不同的动作,而我们的url只有一个。

上面我的代码中有个read_json方法,这个是永远执行不到的,因为RestController defaultMethod为get,不识别的请求类型 比如我最后一个other请求会使用默认的方式,拼接出来的为 read_get_json,这个方法存在所以默认都会执行该方法了,但是如果没有这个方法方法,比如把这个方法注释掉,当识别不出来的时候请求类型的时候就会执行read_json。

另外就是测试了下CUSTOM, 我的意思是看下定制自己的请求类型。当然这样做不符合标准,有get post put delete一般需求都是相当的够用。这里只是做一个测试。

直接请求是会到默认的去的,但是我这里成功执行到了,需要在RestController中修改$allowMethod,如下
// REST允许的请求类型列表
protected $allowMethod = array('get','post','put','delete' ,'custom');
当然我也不建议这样直接修改源码的,最好是遵循设计模式,面向扩展而不面向修改,有这样的需求的时候在上层利用config进行动态配置,而不要修改框架。
当然因为我没有看明白,还没有看见这个东西目前能动态配置,我想稍微修改下就可以做到了,大概扫了下3.1的代码这块貌似灵活点,可能3.2还没有加全吧。

没有搜到什么教程,主要新版本刚出来,就自己琢磨了下,大概就是这么回事了,rest就是一个建议标准,RestController 中也就是$_SERVER['HTTP_ACCEPT']拼接了下方法,如果没有这个东西自己rewrite或者就写insert get delete等方法返回json,然后通过不同的url请求数据或者说rewrite下其实都一样。只是这个潮流,看起来高端一点。 应该差不多了吧,剩下的有问题,欢迎交流指正~
评论() 相关
后面还有条评论,
评论支持使用[code][/code]标签添加代码
您需要登录后才可以评论 登录 | 立即注册
收藏
ぷ飛翔ぶ
积分:206 等级:LV1
热点推荐
(追記) (追記ここまで)
最新更新

我们

合作

网站

信息

ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。

AltStyle によって変換されたページ (->オリジナル) /