Thinkphp5.0极速搭建restful风格接口层

下面是基于ThinkPHP V5.0 RC4框架,以restful风格完成的新闻查询(get)、新闻增加(post)、新闻修改(put)、新闻删除(delete)等server接口层。

1、下载ThinkPHP V5.0 RC4版本;

2、配置虚拟域名(非必须,只是为了方便);

Apache\\conf\\extra\\httpd-vhosts.conf

3、开启伪静态支持.htaccess文件

apache方法:

a)在conf目录下httpd.conf中找到下面这行并去掉#

LoadModule rewrite_module modules/mod_rewrite.so

b)将所有AllowOverride None改成AllowOverride All

public\\.htaccess文件内容:

4、创建测试数据

tprestful.sql

5、修改数据库配置文件

application\\database.php

6、定义restful风格的路由规则,

application\\route.php

7、新建模型

application\\index\\model\\News.php

8、新建控制器

application\\index\\controller\\News.php

9、测试

a)、访问入口文件,默认在public\\index.php

b)、客户端测试restful的get、post、put、delete方法

client\\client.php

请求工具类

client\\ApiClient.php

完整代码从我github下载:

https://github.com/phper-hard/tp5-restful

TP6多应用模式下获取不到当前控制器和方法名

前言:最近使用TP6做了一套项目,发现多应用模式下使用 $this->request->controller() 和 $this->request->action() 无法获取到当前的控制器和方法名,自己研究了一下,找了个笨办法,记录一下,如果大家有更好的办法,欢迎留言。

开发环境

问题重现

1、先创建一个新项目

2、修改 /config/app.php 加入下面两行

3、修改 /config/route.php

4、删除 /app 下面的 controller 目录,创建 index 文件夹,目录结构如下:

5、上代码,IndexController.php 的内容:

/app/index/route/app.php 的内容

6、启动然后访问该应用,控制器与方法输出都是空。

解决方案

调试发现 $this->request 对象的 rule 里面有当前控制器和方法名

可使用 $this->request->rule()->getName()或$this->request->rule()->getRoute() 获取,

谜之操作

另外调试发现,Controller 的 init 方法好像没执行,在 Request 里面打两个断点,一样可以访问,可以用上面的方法获取到控制器和方法名。

本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com

点赞 0
收藏 0

文章为作者独立观点不代本网立场,未经允许不得转载。