文档章节

使用tp写接口

十月初五的月亮
 十月初五的月亮
发布于 2016/09/11 14:30
字数 331
阅读 7
收藏 0
<?php
namespace Home\Controller;
use Think\Controller\RestController;
class ApiController extends RestController {

   // public $defaultMethod = 'post';
   // public $allowType = ['html'];
  //  public $defaultType = 'json';
    public function index(){
        echo 'I am index';exit;
    }
    public function test1()
    {
       $html = '<span style="color:red">aaa</span>';
        $this->response($html,'html');
    }
    public function test2() {
        $id = I('get.id');
        $status = I('get.status');
        $data = [$this->_method,$this->_type,$_GET];
        header('Access-Control-Allow-Origin:http://localhost');
        header('Access-Control-Allow-Methods:POST');

        $this->response($data,'json');
    }
    public function test3() {
        $data = [$this->_method,$this->_type,$_GET];
        header('Access-Control-Allow-Origin:http://localhost');
        header('Access-Control-Allow-Methods:POST');

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

    }
}

后台代码中控制器继承RestController,设置资源类型,请求方法等。在跨域请求中设置header头部允许跨域请求,测试中设置Access-Control-Allow-Methods无效,不知道为什么。如果是jsonp请求,就用$this->ajaxReturn($data,'jsonp');

<!DOCTYPE html>
<html>
<head>
    <title>test tp api</title>
    <script src="http://cdn.bootcss.com/jquery/3.1.0/jquery.min.js"></script>

</head>
<body>
<input  type="button" value="button" onclick='test()'>
<input type="button" name="" value="jsonp" onclick="testjsonp()">
<script type="text/javascript">
function test(){
    $.ajax({
        type:'GET',
        url:'http://www.tp.com/home/api/t2/333?aa=323',

        //data:{data:'abc'},
        // beforeSend:function(request){
        //         request.setRequestHeader('Origin','songzhiwen');//此处可以获取请求对象设置头部信息
        //     },
        success:function(data){
            console.log(data);
        },
    })
}
// Access-Control-Allow-Origin   Origin
// 
function testjsonp(){
    $.ajax({
    type:'post',
    url:'http://www.tp.com/home/api/test3',
    jsonp:'callback',
    data:{a:1,b:2},
    dataType:'jsonp',
    success:function(data){
            console.log(data);
    }
    })
}
</script>
</body>
</html>

 

路由配置

'URL_MODEL' => 2,
    'URL_ROUTER_ON' =>true,
    'URL_ROUTE_RULES' => [
        'api/t1'=>['api/test1'],
        'api/t2/[:id]'=>['api/test2','status=1',['ext'=>'']],
//        'api/t3'=>['api/test3','status=1',['ext'=>'']],
    ],

可设置可选参数,额外参数,请求后缀限制,请求方法限制

© 著作权归作者所有

上一篇: jsonp请求
下一篇: nginx
十月初五的月亮

十月初五的月亮

粉丝 0
博文 71
码字总数 31441
作品 0
朝阳
私信 提问
我眼里的THINKPHP5新亮点(1)

1.URL访问 可以看到,无论是URL访问还是命令行访问,都采用PATHINFO访问地址,其中PATHINFO的分隔符是可以设置的。注意:5.0取消了URL模式的概念,并且普通模式的URL访问不再支持,但参数可以...

taxilmc
2016/09/24
510
2
pfSense book之L2TP VPN

pfSense可以充当L2TP VPN服务器。 L2TP纯粹是一种隧道协议,不提供自己的加密,因此它通常与其他一些加密技术(如IPsec)结合使用。 注意 pfSense支持L2TP / IPsec,但是,在许多常见的情况下...

鐵血男兒
2017/11/30
0
0
Hillstone 防火墙 l2tp-over-IPsec VPN搭建 web 说明

Web搭建l2tp-over-ipsec 很简单,简单来说分成两步: 1.搭建一个l2tp vpn; 2.将l2tp vpn 使用到 ipsec上; 第一步:搭建一个l2tp vpn 首先选择左边l2tp VPN – 新建: 欢迎页填写vpn名称, 接...

王占兴
2018/01/09
0
0
如何用一台cisco1921-K9解决目前国内常见访问全网需求和流量区分策略?

好几没更新了,今天来讲讲一个PPTP访问翻墙的售前与交付实施的故事,今天直接上正文,不扯其他的情怀了。 逻辑拓扑示意图: 目前客户痛点简述: 客户在数据中心有一台服务器和一台思科1921-...

Allen在路上
2017/05/08
0
0
如何用一台思科1921

如何用一台思科1921-K9-sec解决目前国内常见翻墙需求? 逻辑拓扑示意图: 目前客户痛点简述: 客户在数据中心有一台服务器和一台思科1921-k9,接入国内BGP线路。目前因客户终端办公用户近期增...

咖啡
2017/05/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

编程作业20190210900169

1编写一个程序,提示用户输入名和姓,然后以“名,姓”的格式打印出来。 #include <stdio.h>#include <stdlib.h> int main(){ char firstName[20]; char lastName[20]; print......

1李嘉焘1
32分钟前
6
0
补码的优点及原理分析

只讨论整数 1.计算机内部为什么没有减法器? 减法运算本身其实就是加法,如x - y即x +(-y),所以只需要将负数成功表示出来并可以参加加法运算,那加法器就可同时实现“+”和“-”的运算。这...

清自以敬
47分钟前
70
0
Docker 可视化管理 portainer

官网安装指南: https://portainer.readthedocs.io/en/latest/deployment.html docker-compose.yml 位置,下载地址:https://downloads.portainer.io/docker-compose.yml...

Moks角木
今天
7
0
Spring Security 实战干货:必须掌握的一些内置 Filter

1. 前言 上一文我们使用 Spring Security 实现了各种登录聚合的场面。其中我们是通过在 UsernamePasswordAuthenticationFilter 之前一个自定义的过滤器实现的。我怎么知道自定义过滤器要加在...

码农小胖哥
今天
9
0
常见分布式事务解决方案

1 微服务的发展 微服务倡导将复杂的单体应用拆分为若干个功能简单、松耦合的服务,这样可以降低开发难度、增强扩展性、便于敏捷开发。当前被越来越多的开发者推崇,很多互联网行业巨头、开源...

asdf08442a
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部