序言
好习惯造就好人生,开发中要善于总结。今天我继续给大家分享一些干货,关注我的粉丝们有福利了哈。下边是我在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
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。