我正在设计一个php API,我给我的用户一个php文件(core.php)来添加到他们的服务器上。然后使用它们只需要include_once('api / core.php')。在core.php里面我需要创建一些函数来解析主服务器上的json文件。
让我们说他们需要一个完整的用户列表,所以他们必须做类似的事情:
include_once('api/core.php');
print_r(myApi_list('user','all'));
在 core.php 内部,该功能将类似于:
function myApi_list($pa, $pb) {
if($pa == 'user') {
//here will be a code that call my server
return resp;
}
//more stuf
}
当然,我的服务器上还会有另一个脚本来处理sql查询和安全性问题。我的问题是,如果我使用file_get_contents,从core.php调用我的服务器的最佳方法是什么?并告诉我的服务器脚本回答可能是一个json文件(然后core.php解析那个)?或者我应该使用cUrl?由于这是一个API,我宁愿使用在PHP服务器上更可能默认处于活动状态的模块。
您认为这种情况的最佳方法是什么?
答案 0 :(得分:1)
如果只是JSON,请使用file_get_contents()
。它更容易,编码时间更短。只需将主服务器上脚本的标题设置为header('Content-type: text/json');
,然后使用file_get_contents()
并解析该响应。
如果响应为空,则存在无效的api请求(或者该查询没有数据,可以通过返回“未找到数据”来捕获)。如果响应的解析是null
,则服务器上会出错。
答案 1 :(得分:1)
我的推荐是cURL。
函数file_get_contents的使用本身非常有限。它只能返回数据或错误。
另一方面,cURL有很多选择。因此,你可以制作干净的错误消息,出现问题,404 api已停业,500服务器停机等。此外,cURL可以选择使用POST值,而不是file_get_contents。
file_get_contents还有allow_url_foppen的限制(可以禁用用于外部地址的功能),请参阅this question(这也建议使用cURL over file get contents