2011-01-28 53 views
0

我正在構建一個API,我正處於如何實現它的十字路口。我打算使用json,因爲它們可以很容易地在php和javascript中表示對象/數組。

我有兩種方法來實現它幾乎:

1)把方法調用成JSON

$input = $_REQUEST['i']; 
$i_obj = json_decode($input); 
api_handle($i_obj); 

2)按方法調用(也許還有其他變量,如會話)並行,只需通過$ _REQUEST獲取數據即可。

$method = $_REQUEST['m']; 
$argv = json_decode($_REQUEST['argv']); 
api_handle($method,$argv); 

我可以看到,在第二種情況下,有可能是少了json_decode調試,但從一個用戶友好的點,一個AJAX/JS編碼器可以只建立目標並把它通過json_encoded輸入「我」。

我的問題到底是,這些好的方法是實現這一目標還是有更好的方法?請記住,這是一個簡單的例子,並不代表該API的其餘項目範圍。

+1

除非你的API不確定它的輸入來自哪個應該是不要使用`$ _REQUEST`。來自`$ _COOKIE`的值也存儲在那裏。 – 2011-01-28 19:12:05

回答

1

在這種特殊情況下,最好將所有方法調用數據耦合到一個對象中,而不是從關鍵字$_REQUEST中獲取它,因爲$_REQUEST包含其他無關數據以及相同級別。
方法名稱及其參數綁定在一起,必須作爲單個數據包傳輸。也許有一天你會希望增加調用能力,即類靜態方法。向$_REQUEST添加一個更多的關鍵字並且處理然後再向對象添加一個字段將會困難得多,因爲對象是更加封裝的東西,並且會縮小您的代碼更改所影響的區域。
當然,您可以通過奇想命名對象字段,而不用考慮這個鍵是否已被另一個腳本使用$_REQUEST