2014-09-20 64 views
1

我想創建一個新的應用程序,爲此我選擇了laravel。所以我也是新來的laravel。Laravel:將REST控制器與普通控制器和視圖相結合?

我想從一開始就爲瀏覽器插件或移動應用程序集成一個API。當然,我不想讓它成爲只有API的應用程序。我仍然需要普通的視圖和控制器來處理這個問題。現在我對正確的結構有點困惑。當它是一個API請求時,它應該將數據輸出爲JSON,否則以普通視圖輸出。

什麼是最好的方法來實現這一目標?所有的教程都基於API的應用程序,它不會幫助我。

是不是很好的做法,使UserController.php和ApiUserController.php?或UserController.php和像API/v1.0/UserController.php的子文件夾結構?我不會經常用這種結構來重複一些事情嗎?我的意思是經常唯一的變化就是輸出,不是嗎?

提前致謝!

回答

2

你的API應該在API路徑上服務,它們可以和其他用戶的東西在同一個控制器中,但它們實際上並不是必須的。

我喜歡使用一個ApiController及其中的所有API函數。在那裏,你可以實現像「showUsers」這樣的東西,並讓它返回User :: all()或User :: paginate(50)。如果您直接在Laravel中返回一個模型,它將默認輸出爲JSON,這非常方便。

現在對於一些真正的API善良,我喜歡用dingo結合artdarek的Laravel OAuth 2包裝來使用API​​包。它提供了真正高質量的安全API和許多功能,如速率限制和範圍以及所有酷炫的東西。

你真的不想使用REST風格的控制器,一個API,因爲你可能想名稱不同端點。例如,我喜歡將所有用戶保留在api /用戶,但用戶/用戶的單個用戶。這正是我所喜歡的,在我看來,我的API應該完全可定製且可路由。

+0

謝謝!所以,如果我有這個權利,你只有一個涵蓋所有API功能的控制器?或者也許爲不同版本的多個控制器,對吧?似乎是合法的。 laravel寧靜的控制器,然後製作單頁應用程序,不是嗎?或者爲什麼要使用它們? – sleepless 2014-09-20 16:41:17

+0

它們對於很少有簡單路線的東西很酷,因爲它們更容易路由。他們已經與兩層共同努力,所以你不能用戶/編輯已經有一個,因爲getUserEdit只接受用戶編輯。 是的,你顯然可以爲兩個API版本創建兩個控制器。 – aFreshMelon 2014-09-20 21:16:07

相關問題