2013-01-25 182 views
0

因此,我正在編寫一個API,我很害怕我寫的代碼會很快變得混亂。RESTful API客戶端交互

一些頁面需要從API的幾個不同的資源中獲取數據,並且我到處都有大量的try和catch語句。例如:

$topic_id = 100; 
try 
{ 
    $topic = AwesomeAPI::get('topics/' . $topic_id); 
    $parts = AwesomeAPI::get('parts?topic_id=' . $topic_id); 
    try 
    { 
     // Get another resource here 
    } 
    catch (Exception $e) 
    { 
     // Error 
    } 
} 
catch (Exception $e) 
{ 
    return Response::error('404'); 
} 

我確信這段代碼非常混亂,如果我必須循環訪問資源並獲取循環中的另一個資源,情況會變得更糟。呸。

我想知道如何以一種整潔的方式最好地處理客戶端與API的交互。

+0

在我看來,你應該有一個類內的所有API邏輯,因此內部的方法。因此,不要編寫像發佈的代碼,你可以寫這樣的代碼:'$ api = new AwesomeAPI(); $ topic = $ api.GetTopic($ topic_id); 。 。 。 ' – juanreyesv

+0

對,當然!並處理方法中的異常? – Sneaksta

+0

這取決於你想如何處理異常。如果你在API中捕獲它們,那麼API應該能夠返回一條錯誤消息,應用程序也應該能夠檢索該消息並做一些事情。 – juanreyesv

回答

1

正如我之前所說,在我看來,你應該有一個類內的所有API邏輯,因此內部的方法。因此,而不是寫像一個貼代碼,你可以寫這樣的事情:

$api = new AwesomeAPI(); 
$topic = $api->GetTopic($topic_id); 

而且你AwesomeAPI類可以是這個樣子:

public class AwesomeAPI() 
{ 
    public $topic_url = 'somewebsite.com/topics?id{0}'; 

    function GetTopic($topicId) 
    { 
     //Some code here 
     $response = 'Some response (could be a JSON Document)'; 
     return $response; 
    } 
} 

這樣你的代碼的應用程序將會更加優雅和清晰。

希望這可以幫助你

+0

簡單但有幫助。非常感謝你! – Sneaksta