从API服务上的PHP脚本调用远程PHP脚本

时间:2013-04-29 13:28:24

标签: php api

我正在设计一个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服务器上更可能默认处于活动状态的模块。

您认为这种情况的最佳方法是什么?

2 个答案:

答案 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