2014-06-26 79 views
4

我想找出構建我即將開始的新項目的最佳方法。在同一個Laravel項目中的Web應用程序和API?

我們目前有一個web應用程序和一個移動應用程序,它們都是通過API提供數據的。目前,Web應用程序是在CodeIgniter的安裝上完成的,而API是在單獨安裝的CodeIgniter上完成的。對於數據,Web應用程序調用API並處理返回的數據。

在這一點上,看起來我們正在爲Web應用程序切換到Laravel,並且我認爲這可能是重做API的一個好機會,因爲我們的一些規則已經發生變化,可能是時候一起下車CodeIgniter。

現在問題:我已經閱讀了幾個人將他們的Web應用程序和API構建到同一個Laravel項目中的源代碼,並且只是使用路由來分別控制API和Web應用程序的映射。雖然這看起來像一個有趣的想法,但它讓我想知道這是否是最佳做法,因爲我會懷疑沉重的API流量是否會降低Web應用的速度,反之亦然。

問:

請問最好的做法是保持在自己的項目中去耦的API或這將是確定做在同一個項目?

跟進質詢,

爲了從通過如果不脫鉤的API的Web應用程序的調用,將那只是對API呼叫路由?最好去上課?

+0

很好的問題....我總是將我的laravel應用程序與他們的apis耦合在一起,但從未真正考慮api獲取更多流量的場景。 – KyleK

+0

我真的不認爲這有一個正確的答案,但解耦API聽起來像一個好主意。也許甚至可以把它拉到應用程序中。 –

+0

從Web應用程序解耦API層聽起來不錯。但我面臨的問題是,共享數據庫如何影響開發流程?哪個應用程序將負責管理架構更改等 –

回答

3

在我看來,你有兩個選擇:只

  • 建立與Laravel(Response::json隨處可見)的API,然後建立使用像角,或jQuery的一個JS框架的Web應用程序。 Web應用程序和移動應用程序都可以向Laravel應用程序發出AJAX請求,並且JS框架將處理顯示它。這將是「不在同一地點構建api + web應用程序」解決方案。你可以在任何你想要的地方建立你的網絡應用,或者在Laravel應用中。

    這個API很容易維護,你甚至可以合併Web應用程序和移動應用程序,因爲它們都會做同樣的事情(除非你真的希望它們不同)。而且,擴展起來更容易,因爲界面在任何API消費者應用程序中保持不變。

    這將有助於很多https://laracasts.com/series/incremental-api-development

  • 構建的API,並在同一個地方的Web應用程序,將需要2分離您的應用程序:一個部分將響應Ajax請求並返回JSON和其他部分將回答正常的方式,返回PHP的意見和所有的..

    這意味着大量額外的工作和兩倍的意見,因爲你將不得不建立由移動應用程序處理的意見和由Laravel自己處理的視圖。這是很多要覆蓋和維護(和測試)。

這取決於你正在建造什麼樣的項目。它是SPA嗎?

相關問題