发布于 
pv: - | uv: -

这些天,我做了个API

这些天我做了个API站点

  何为API?简单来说就是别人为你提供一些服务的接口。就像某些软件内部提供天气数据,一般也都是调用的类似中国天气之类的API服务,当然用python等去爬取网页也是可以的啦|´・ω・)ノ
  那么,怎么用php去做一个最简单的API接口呢?就以我做的一句话API为例,当我们访问 https://api.xsot.cn/sentence/时他便给我们返回了一个由json格式化后的数组:

1
2
3
4
5
6
7
8
{
"uuid": "82a944fd-8098-4b12-9177-6fd285e4efa8",
"sentence": "成一事者,是失之不渝的愚者;毁一事者,是停滞不前的贤者。",
"type": "a",
"from": "不正经的魔法讲师",
"from_who": "",
"created_at": "1557302125"
}

  这是一般API的返回格式-即json,那么如何实现呢?我们来看一个最简单的案例:

1
2
3
4
5
6
7
8
9
10
<?php 
$data = array(
"msg" => "hello world!"
)
//返回的数据
header('Content-type:text/json');
//json头
exit(json_encode($data));
//返回数据
?>

  这样你便完成了一个最简单的API接口,将需要的数据放在一个data数组中,之后将这个数组转化成json,最后将转化后的json返回即可。
  当需要调用接口的时候只需要:

1
$data = file_get_contents("https://api.xsot.cn/sentence/");

  再将他解码下,并调用其中的数据即可

1
2
$arr = json_decode($data,true);
$sentece = $arr['sentence'];

  做这个平台的时候遇到的最大的问题可能就是一言的js返回了吧,因为没学过js,对js的同步调用函数不太理解,一开始我是直接使用htmlspecialchars()函数直接将js给echo出来???然后?居然调用的时候出错了,查了半天资料最后才发现没有使用text/js的http报头,我也很是无奈 ̄﹃ ̄
  然后在做网易云音乐的时候,因为网易云音乐官方并未提供API接口,只能自己抓包,然而网易云音乐UWP版本在开启Fiddler的时候居然连不上网。在查询微软官方文档之后发现,这可能是UWP的特性?(╯‵□′)╯︵┴─┴因为UWP貌似不能开代理,微软官方也给出了解决方法,但是我并没有尝试。最后的话还是在Github找了半天找到了一些网友给出的接口吧