0

我正在设计一个 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 查询和安全问题。我的问题是,从 core.php 调用我的服务器的最佳方式是什么,我应该使用 file_get_contents 吗?并告诉我的服务器脚本用一个 json 文件来回答(然后 core.php 只是解析它)?还是我应该使用 cUrl?由于这是一个 API,我更喜欢使用在 php 服务器上默认情况下更有可能处于活动状态的模块。

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

4

2 回答 2

1

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

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

于 2013-04-29T13:31:56.053 回答
1

我的推荐是 cURL。

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

另一方面,cURL 有很多选择。因此,您可以清楚地显示出错信息、404 api 故障、500 服务器停机等。cURL 还可以选择使用 POST 值,而 file_get_contents 则不能。

file_get_contents 也有 allow_url_foppen 的限制(可以禁用用于外部地址的功能),请参阅这个问题(也建议在文件获取内容上使用 cURL

于 2013-04-29T13:33:25.430 回答