2013-04-29 363 views
0

在设计php API时,我向用户提供了一个php文件(core.php)以在其服务器上添加。然后使用它,他们只需要include_once('api/core.php')。在core.php中,我需要创建一些函数来解析来自主服务器的json文件。从API服务上的PHP脚本调用远程PHP脚本

比方说他们需要一个完整的用户列表,因此他们将不得不做这样的事情:

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查询和安全问题。我的问题是,从core.php调用我的服务器的最佳方式是什么,我应该使用file_get_contents?并告诉我的服务器脚本回答可能是一个JSON文件(然后core.php只是解析)?或者我应该使用cUrl?由于这是一个API,我倾向于使用更可能在php服务器上处于活动状态的模块。

您认为在这种情况下最好的方法是什么?

回答

1

我的推荐是cURL。

函数file_get_contents本身的使用非常有限。它只能返回数据或为false。

cURL另一方面有很多选择。所以你可以做出干净的错误消息出了什么问题,404 api停业,500服务器停止等。另外cURL有使用POST值的选项,file_get_contents不是。

还有的file_get_contents具有allow_url_foppen的限制(可以关闭该功能用于外部不会忽略),见this question(也建议使用包住文件获取内容

+1

我会卷曲过去的file_get_contents()和那么你可以直接发布数据到你的服务器,并正确使用SSL等东西+你会得到更好的错误报告 – Dave 2013-04-29 13:40:50

1

如果它只是JSON你回来,使用file_get_contents()。这很容易,并且需要更少的时间编码。只需将主服务器上脚本的标题设置为header('Content-type: text/json');,然后使用file_get_contents()并解析该响应。

如果响应为空,则会出现无效的api请求(或者该查询没有数据,可以通过返回“未找到数据”来捕获)。如果解析的响应是null,则服务器上出现错误。