1

序言

好习惯造就好人生,开发中要善于总结。今天我继续给大家分享一些干货,关注我的粉丝们有福利了哈。下边是我在PC端调用接口整理出来的一些笔记,以及提醒大家需要注意的事项!

原因分析

1.首先我说一下为啥会在PC端调用接口获取数据吧!
给个链接给你们:http://www.bitscn.com/pdb/php/201411/402...。看完这篇文章之后估计你就明白我的用意了。
2、把相关的资料整合,不但利于信息的获取还能作为前车之鉴,前人栽树后人乘凉懂吧?哈哈,我是博爱党。

笔记整理

1、Yii2 PC端调用接口获取数据的三种方式

PHP调用Api接口的方法

    1、直接在方法里引用接口的url。
    2、通过file_get_contents()函数获取url的数据。
    3、把获取到的JSON格式数据进行反转。(可选)
    4、参考网址:http://www.jb51.net/article/20705.htm   //PHP远程调用URL
        例: $url='http://api.xxx.com/v1/departments?id=list&company_id=1';
             $data=file_get_contents($url);
             $data_1 = json_decode($data,true);     //JSON反转

Ajax调用Api接口的方法

    例:
        $.ajax({
        type:"POST",
        url: //你的请求程序页面随便啦(接口地址)
        async:false,//同步:意思是当有返回值以后才会进行后面的js程序。
        data://请求需要发送的处理数据
        success:function(msg){
            if (msg) {//根据返回值进行跳转
                window.location.href = '你的跳转的目标地址(页面地址)';
            }
        }

JQ调用Api接口的方法

例:
        <script type="text/javascript" src="/apihandonesvn/frontend/web/assets/68738eee/jquery-1.11.2.min.js"></script>
        <script type="text/javascript">
            //1、GET方式
            $.get('http://api.XXX.com/v1/departments?grade=1',function(data){ 
                    //  console.log(data);//输出内容,类似alert()
                     $('#content').html(data);
            });

            //2、POST方式
            $.post('http://api.XXX.com/v1/departments?grade=1',{a:1,b:2,c:3},function(data){ 
                     $('#content').html(JSON.stringify(data));
            });

        </script>

补充:使用后两种方法的话,在接口对应控制器的所有方法顶部加上下面代码

 public function behaviors()
    {
        return ArrayHelper::merge([
            [
                 'class' => Cors::className(),
                 'cors' => [
                     'Origin' => ['http://www.ceshi.com'],//PC端的Url
                     'Access-Control-Request-Method' => ['GET','POST','PUT','DELETE', 'HEAD', 'OPTIONS'],
                 ],

                'actions' => [
                    'index' => [
                        'Access-Control-Allow-Credentials' => true,
                    ]
                ]
            ],
        ],
            parent::behaviors());
    }

以上三种PC端调用接口的方式,本人亲测过都可行,你们各取所爱。

2、PC端调用接口,接口怎么获取uid的问题?
此时接口就不可用Yii自带的Yii:$app->user->id获取了,因为接口也不可能登录。接口要获取当前登录者的uid可以通过PC端传个access-token,然后在接口用get获取去查出uid,解决。
接口获取其它参数的时候也可同样仿造此方法。

3、报:PHP Warning – yii\base\ErrorException
Invalid argument supplied for foreach()错误的问题及解决方法
这个错误是循环空数据造成的,只要在数据循环前得加个判断,保证数据存在才能循环就解决了。这虽然不是什么特别难解决的错误,但是细节问题我们还得注意,细节决定成败。

提醒注意

1、PC端调用接口进行本地测试,本地接口地址最好别和网上一致,因为这样它会先走本地接口,要是遇到本地接口好的话,不好找原因。

相关资料

PHP(CURL)POST数据调用API简单示例:http://eyexiaobo.iteye.com/blog/1100712


zacklee
704 声望56 粉丝