2012-02-25 79 views
2

我正在重建的网站使用自己的API来收集其大部分内容(例如http://api.example.com/)。尽管对此的回答很自我解释,但我只想在继续之前确定。在页面上包含API的最有效方式是什么?

据我所知,我有2(可能是3)通过PHP从API加载数据的选项。

  1. 我的类装入文件,并从类(可能是最好的方式手动收集数据,但需要更多的代码,如果更改了类所做的,我一定要改变页面和API文件而不是仅仅改变API)
  2. 使用file_get_contents('http://api.example.com/search')。这将是最简单的方法,但它需要另一个HTTP请求,我认为它稍慢。
  3. 最后,如果这可能,那么我认为这将是最好的方式,但就我所知,我不认为这是可能的。使用$_GET参数在本地读取文件,并以此方式获得结果。

1.

// Include the mysql connections 
require_once($_SERVER['DOCUMENT_ROOT'].'/scripts/php/_connections/mysql.company.php'); 

// Include the Classes (Company and Facebook) 
require_once($_SERVER['DOCUMENT_ROOT'].'/scripts/php/_classes/class.company.php'); 
require_once($_SERVER['DOCUMENT_ROOT'].'/scripts/php/_classes/class.mysql.php'); 
require_once($_SERVER['DOCUMENT_ROOT'].'/scripts/php/_facebook/config.facebook.php'); 
require_once($_SERVER['DOCUMENT_ROOT'].'/scripts/php/_facebook/class.facebook.php'); 

// Create the objects (Company, MySQL, Memcache and Facebook) 
$memcache = new memcache; 
$facebook = new Facebook($facebook_config); 
$mysql = new mysql($memcache); 
$company = new company($_DATABASES,$_CONNECTIONS,$mysql,$memache,$facebook); 

// CALL THE RELEVANT CLASS METHOD HERE 

2. 喜欢的东西(忽略错误)

$API = 'http://api.example.com/search?query=test' 
$data = file_get_contents(url_encode($API)); 

3. 不知道这是可能的,请注意我不想使用最后一种方法

$parameters = array(
    'method'=>'GET', 
    'parameters'=>array(
     'function'=>'search', 
     'query'=>'test' 
    ) 
); 
$API = some_cool_function('/_scripts/api/2/api/api.php',$parameters); 

// I DO NOT WANT TO DO THIS FOR CERTAIN REASONS: 
$_GET=array(
    'function'=>'search', 
    'query'=>'test' 
); 
$data = include('/_scripts/api/2/api/api.php'); 

回答

2

通常我想说的第一个选项 - 通过OAuth等这项工作到位大多数API的这些日子我相信一个很好的包装类设置会更容易的工作。

+0

感谢您的意见。那么第三个选项是不可能的? – 2012-02-25 19:37:58

+0

我想这取决于api.php中的内容 - 但只是手动填充$ _GET并不是很好的做法。方法2和方法3看起来简单而优秀,但实际上它们可能会老化很严重,并且导致您无法顺利解决问题。通过一个可以简单更新的类,您几乎不需要更改方法调用等。另外,您会将所有内容都粘贴到$ data中 - 如果它不是一个真的很奇怪的对象。 – BenOfTheNorth 2012-02-25 19:50:33

+1

api.php只是返回一个由API函数产生的JSON编码的字符串,这就是为什么给出$ data的结果。我完全同意设置$ _GET参数,然后包括一个文件是不好的做法,这是可怕的做法! – 2012-02-25 19:58:25

相关问题