脚本宝典收集整理的这篇文章主要介绍了前端之php curl获取接口数据,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
前端之所以要这样做,也是临时的,就是要拿到数据,但通过API接口地址很多都是跨域的,因为前端写的都是静态页,使用ajax来获取数据的,以Chrome browser为例
如果没有,下载这个允许跨域扩展,又不想麻烦后台,那就很蛋疼了
基本前端都要有服务器环境,不是node 就是 php 或 java 之类的,这里以php为例,讲下curl之转接口,不域跨
首先项目文件夹要在服务器根目前里,也就是通常说的www目录或htdoc目前,这个应该都知道
下面先写一个简单的入门代码,假设直接请求test2.php是跨域的,而test.php是本地服务器的
test.htML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script>
var xhr = new XMLHttpRequest();
xhr.open('get', 'test.php', true);
xhr.responseType = 'json';
xhr.send(null);
xhr.onreadystatechange = function() {
if(xhr.status===200 && xhr.readyState===4) {
console.log(xhr.response)
}
}
</script>
</body>
</html>
test.php (使用curl拿test2.php的数据)
<?php
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'localhost:8080/test/test2.php');
curl_setopt($curl, CURLOPT_HEADER, 0); // 0:不返回头信息
curl_setopt($curl, CURLOPT_RETURNtransfer, 1); // 1:内容以变量的形式存储,而不直接输出
$data = curl_exec($curl);
curl_close($curl);
echo $data;
test2.php ( 原数据 )
<?php
header('content-type: application/json');
$data = [
'name' => 'tom',
'age' => 24,
'score' => 98,
'class' => '502',
'gender' => 'male'
];
echo json_encode($data);
这样拿到数据,做完后再替换成正确的接口地址。。
进一步,如果有多个请求呢?
那我们就需要一个用于识别的url参数了,这里使用action测试
test.html