php+tp框架+API,php - tp框架能开发API接口吗

怪我咯2017-04-10 17:12:231楼

TP的controller其实有很多种的

HproseController,JsonRpcController,RestController,RpcController,YarController

我拿RestController给你介绍一下

RESTFul方法的操作方法定义主要区别在于,需要对请求类型和资源类型进行判断,大多数情况下,通过路由定义可以把操作方法绑定到某个请求类型和资源类型。如果你没有定义路由的话,需要自己在操作方法里面添加判断代码,示例:

namespace Home\Controller;

use Think\Controller\RestController;

Class InfoController extends RestController {

Public function rest() {

switch ($this->_method){

case 'get': // get请求处理代码

if ($this->_type == 'html'){

}elseif($this->_type == 'xml'){

}

break;

case 'put': // put请求处理代码

break;

case 'post': // post请求处理代码

break;

}

}

}

在Rest操作方法中,可以使用$this->_type获取当前访问的资源类型,用$this->_method获取当前的请求类型。

REST控制器类还提供了response方法用于REST输出: 用法如下:

$this->response($data,'json');

Response方法会自动对data数据进行输出类型编码,目前支持的包括xml/json/html。

除了普通方式定义Restful操作方法外,系统还支持另外一种自动调用方式,就是根据当前请求类型和资源类型自动调用相关操作方法。

要使用这种方式的前提就是不能为当前操作定义方法,这样在空操作的检查之前系统会首先按照上面的定义规范顺序检查是否存在方法定义,如果检测到相关的restful方法则不再检查后面的方法规范,例如我们定义了InfoController如下:

namespace Home\Controller;

use Think\Controller\RestController;

Class InfoController extends RestController {

protected $allowMethod = array('get','post','put'); // REST允许的请求类型列表

protected $allowType = array('html','xml','json'); // REST允许请求的资源类型列表

Public function read_get_html(){

// 输出id为1的Info的html页面

}

Public function read_get_xml(){

// 输出id为1的Info的XML数据

}

Public function read_xml(){

// 输出id为1的Info的XML数据

}

Public function read_json(){

// 输出id为1的Info的json数据

}

}

如果我们访问的URL是:

http://www.domain.com/Info/read/id/1.xml

假设我们没有定义路由,这样访问的是Info控制器的read操作,那么上面的请求会调用InfoController类的 read_get_xml方法,而不是read_xml方法,但是如果访问的URL是:

http://www.domain.com/Info/read/id/1.jso...

那么则会调用read_json方法。

如果我们访问的URL是

http://www.domain.com/Info/read/id/1.rss

由于我们不允许rss资源类型的访问,所以,调用的方法其实是read_html方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/395019.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OTL翻译(9) --常量的SQL语句

常量的SQL语句 一个没有绑定变量的SQL语句、SQL语句块或是存储过程就被称为常量的SQL语句。OTL通过一个静态的函数来执行这样的SQL语句。 例如: // static otl_cursor::direct_exec()otl_cursor::direct_exec(db, // connect object"create table test_tab(f1 …

[HNOI2016]网络 树链剖分,堆

[HNOI2016]网络 LG传送门 表示乱搞比正解难想。 整体二分很好想吧。 但是为了好写快乐,我们选择三个\(\log\)的乱搞。 先树剖,线段树套堆维护区间最大值。对于一次修改,如果是插入,就把树上除了这条链的地方加上这个重要度&#x…

python压缩文件为zip-python 压缩文件为zip后删除原文件

压缩.log 文件为zip后删除原文件 需要注意:本人作为小白,该脚本需要和.log在一起,后面有时间需要改正。 #!/usr/local/python/bin/python #-*-codingutf8 -*- import time import os import sys import zipfile N 7 #设置删除多少天前的文件…

css text-align-last设置末尾文本对齐方式

text-align-last:auto | start | end | left | right | center | justify auto: 无特殊对齐方式。 left: 内容左对齐。 center: 内容居中对齐。 right: 内容右对齐。 justify: 内容两端对齐。 start&#x…

后端开发除了编码还要做什么_每个开发人员都应掌握的基本技能(除了编码)

后端开发除了编码还要做什么Whether you are learning to code, looking for a new job, or just want to improve your skills as a developer, you need to master the essential tools of team collaboration. These are as important as knowing how to code.无论您是学习编…

Python中的defaultdict方法

字典(dictionary)是Python中一种常用的数据类型。不同于其他由数字索引的序列,字典是用"键"(key)来索引的。通常表示为dict(key: val, ...),有以下特征: 键可以是任何不可变&#xff…

git撤销commit 并保存之前的修改

撤销并保留修改 参数 –soft # 先进行commit &#xff0c;之后后悔啦$ git commit -am "对首篇报告研究员字段改为author_name"执行git log $ git logcommit 3d6788f577faba5e1d408e372031c81beee79749Author: yous <yous.com>Date: Thu Dec 14 10:08:36 2017 …

php替换中文,PHP中文替换

//定义编码header( Content-Type:text/html;charsetutf-8 );$wordsarray(我,你,他);$content"测一测我是不是违禁词";$bannedgenerateRegularExpression($words);//检查违禁词$res_bannedcheck_words($banned,$content);write_html($content,$res_banned);/*** descr…

secoclient隧道保活超时或协商超时_推荐:承德市隧道led大屏厂家电话【联丰智慧科技】...

通过为大型隧道施工建设搭建全覆盖式的定位&#xff0c;可以有效施工的效率、项目现场的保障能力。安装隧道门禁能解决哪些问题&#xff1f;近年来&#xff0c;我国交通建设正处于高速发展的阶段&#xff0c;在交通建设中&#xff0c;工程安防工作也越发受到&#xff0c;越来越…

JavaScript Essentials:如何为循环而烦恼

by Zell Liew由Zell Liew JavaScript Essentials&#xff1a;如何为循环而烦恼 (JavaScript Essentials: how to wrap your head around for loops) Let’s say you want to run a function, bounceBall, four times. How would you do it? Like this?假设您要运行一次功能b…

python中的类的成员变量以及property函数

1 python类的各种变量 1.1 全局变量 在类外定义的变量。 1.2 类变量 定义在类里面&#xff0c;所有的函数外面的变量。这个变量只有一份&#xff0c;是所有的对象共有的。在类外用“类.”来引用。 1.3 实例变量 用self.xxx在类的任何函数中定义的变量就是实例变量。在类内用“s…

C++常用的系统函数

数学<math.h>&#xff1a; 1 三角函数 double sin (double); double cos (double); double tan (double); 2 反三角函数 double asin (double); 结果介于[-PI/2, PI/2] double acos (double); 结果介于[0, PI] double atan (double); 反正切(主值), 结果介于[-PI/2, PI/2…

网页特效java代码,美化网页常用特效代码

1&#xff0e;让文字不停地滚动&#xff1c;MARQUEE&#xff1e;滚动文字&#xff1c;/MARQUEE&#xff1e;2&#xff0e;记录并显示网页的最后修改时间&#xff1c;script languageJavaScript&#xff1e;document.write("最后更新时间: " document.lastModified …

作业,两次实验

实验一&#xff1a; 1 编程打印5行的倒三角形&#xff0c;第一行打印9个*&#xff0c;第二行7个*&#xff0c;……第5行打印1个* #include<stdio.h>int main(){printf("*********\n *******\n *****\n ***\n *\n");return 0;} 总结 注意换行以及位置的…

javaweb和ajax使用查询出来的数据做下拉菜单_区块链浏览器实用指南篇:利用链上数据把握减半行情...

进入2020年&#xff0c;加密货币市场最热的话题当属“减半”了。在减半行情的推动下&#xff0c;以BTC为首的减半币种展现出了极强的上行趋势。如何抓住这一波行情&#xff0c;评估正确时机&#xff1f;当然&#xff0c;这个问题的答案可以说是争议纷纷&#xff0c;但有一个参考…

纯函数式编程语言_纯功能编程语言如何改变您的生活。

纯函数式编程语言by Andrea Zanin由Andrea Zanin 纯功能编程语言如何改变您的生活。 (How a purely functional programming language can change your life.) I believe everyone should learn Haskell, even if you won’t use it in your work. It’s beautiful, and it ch…

Win10 教育版

Windows 10 版本 1607 引入了专为 K-12 机构的特有需求而设计的两个版本&#xff1a;Windows 10 专业教育版和 Windows 10 教育版。 这些版本为不断发展的 K-12 教育 IT 环境提供特定于教育的默认设置。Windows 10 专业教育版Windows 10 专业教育版基于 Windows 10 专业版的商业…

java中的排序方法,Java中的排序比较方式:自然排序和比较器排序

这里所说到的Java中的排序并不是指插入排序、希尔排序、归并排序等具体的排序算法。而是指执行这些排序算法时&#xff0c;比较两个对象“大小”的比较操作。我们很容易理解整型的 i>j 这样的比较方式&#xff0c;但当我们对多个对象进行排序时&#xff0c;如何比较两个对象…

ImageView缩放选项

ImageView.ScaleType 将图片边界缩放到所在view边界时的缩放选项。 Options for scaling the bounds of an image to the bounds of this view. 不同选项含义 CENTER 居中&#xff0c;不缩放。 Center the image in the view, but perform no scaling. CENTER_CROP 居中&#x…

css命名_CSS命名约定将节省您的调试时间

css命名I have heard lots of developers say they hate CSS. In my experience, this comes as a result of not taking the time to learn CSS.我听到很多开发人员说他们讨厌CSS。 以我的经验&#xff0c;这是因为没有花时间学习CSS。 Korean ??韩文?? 알림: 한국인 독…