我剛剛開始修改Laravel(PHP newbie alert),我對如何在此框架上實現REST JSON API存在疑問。Laravel和具有多個「嵌套」任務和參數的路由
所需的URL路徑應該是:
http://api.mysite.com/APIKEY/FUNCTION/(ARGUMENTS)*
但什麼是做到這一點的最好方法是什麼?
我沒有找到足夠的解釋性指南,因爲它假定每個功能(身份驗證,搜索等)在不同的路線上。
在我設法創建所需要的數據遷移和模型,我還設置了路線這樣的時刻:
Route::get('/{apikey}/{function}/{arg1}/{arg2}/{arg3?}',
//The first two arguments are mandatory, the 3rd optional
function($apikey,$function,$arg1,$arg2)
{
return Response::json(array(
'status'=>'200'),
200);
})
->where(array('function'=>'[A-Za-z]+'));
這應該是正確的操作流程,但我有一些懷疑。
- 檢查apikey是否有效,如果沒有返回404 json響應。我如何調用這樣的函數,我在哪裏定義它?
- 如果密鑰檢查是成功的,那麼瞭解哪個函數是需要的(我應該使用switch結構還是有更好的方法來實現這一點,比如路由組?在所有使用
Route::group
的例子中都有一個靜態前綴,前綴是apikey,變量) - 返回數據 - 如果可用 - 從數據庫中獲取數據。我想對於每個函數,我應該編寫一個特定的控制器,使用
Models
從數據庫獲取數據。
1-您如何處理身份驗證?調用返回true或false的Controller函數?一點都不清楚。對於身份驗證,我只想發送api密鑰並對其進行一些檢查。在創建驗證過濾器之前,我應該定義驗證(密鑰檢查)功能,但我不知道如何:) 2-好吧 3好吧 – Vektor88
@ Vektor88我已經更新了#1,希望能更好地解釋它。我有我的類在一個共享文件夾結構,然後這個例子假設我有一個名爲「API」的類。我調用一個名爲「checkIfKeyIsValid」的函數,如果該鍵有效,則返回「true」;如果不是,則返回「false」。過濾器檢查該函數返回的內容,如果它不返回「true」,則會拋出(自定義)錯誤,並且由於它表示「返回」,過濾器失敗,路由處理停止。 – snollygolly
感謝您的編輯,我開始瞭解我應該做什麼以及面向對象的PHP如何工作。但是從第一點開始,點2需要可變的前綴,我沒有改變任何東西! – Vektor88