2012-02-25 4 views
2

내가 다시 작성하는 웹 사이트는 대부분의 콘텐츠를 수집하기 위해 자체 API를 사용합니다 (예 : http://api.example.com/). 이에 대한 해답은 아주 자명하지만, 진행하기 전에 확실하게 알고 싶습니다.페이지에 API를 포함시키는 가장 효율적인 방법은 무엇입니까?

내가 아는 한, PHP를 통해 API에서 데이터를로드하는 2 가지 (잠재적으로 3 가지) 옵션이 있습니다.

  1. 나는 문서에 클래스를로드하는 클래스 (아마도 최선의 방법에서 수동으로 데이터를 수집,하지만 더 많은 코드를 필요로하며, 변경 사항이 클래스에 만들어진 경우, 나는 페이지와 API를 변경할 수 있습니다 API를 변경하는 대신 문서 사용)
  2. file_get_contents('http://api.example.com/search')을 사용하십시오. 이것은 가장 쉬운 방법이지만 다른 HTTP 요청이 필요하며 약간 느린 것으로 가정합니다.
  3. 마지막으로 이것이 가능한 경우 최선의 방법이라고 생각하지만 내 지식으로는 가능하지 않다고 생각합니다. 파일을 $_GET 매개 변수로 로컬에서 읽고이 방법으로 결과를 얻으십시오. 이 가능하시기 바랍니다 경우

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

    3. 확실하지 않음 (무시 실수)와 같은

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. 뭔가 나는 그걸 사용하기를 원치 않는다. 내가 멋지게 포장 된 클래스 설정이 작업하기가 훨씬 쉬울 것 확신 대부분의 장소에서의의 Oauth 등으로 API 요즘입니다 - 마지막 방법은

$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

는 일반적으로 나는 첫번째 옵션을 말할 것입니다.

+0

입력 해 주셔서 감사합니다. 세 번째 옵션은 가능하지 않습니까? –

+0

나는 api.php에 무엇이 있는지에 달려 있다고 생각합니다.하지만 $ _GET을 수동으로 채우는 것만으로도 좋은 습관은 아닙니다. 방법 2와 3은 단순하고 멋지게 보입니다.하지만 실제로는 나이가 먹어 치우지 않아 문제가 끝나지 않을 것입니다. 간단히 업데이트 할 수있는 클래스를 사용하면 메서드 호출 등을 변경해야 할 필요가 거의 없습니다. 모든 것을 $ 데이터에 집어 넣을 수도 있습니다. 실제로 수행하는 것이 이상한 일이 아니라면. – BenOfTheNorth

+1

api.php는 API 함수로 인해 JSON으로 인코딩 된 문자열을 반환하기 때문에 $ data에 결과가 표시됩니다. 나는 $ _GET 매개 변수를 설정하고 파일을 포함하는 것이 나쁜 습관이라는 것에 더 동의하지 않을 수있다. 그것은 끔찍한 연습이다 !! –

관련 문제