2017-01-22 69 views
0

我對Laravel非常陌生,想知道哪裏可以成爲連接第三方API的理想場所。這裏是一個需要在我的系統發生Laravel(4.2):在哪裏放置第三方API連接?

1)用戶輸入輸入到形式(使用角的請求發送數據的一般流程到後端

2)路線文件路由請求到控制器我創建在Laravel(我實際上使用的是我使用laravel命令行創建的資源)

3)某處,我需要從此請求中獲取一些數據並通過CURL將其發送給第三方並獲取迴應

4)在其他地方,我需要解析該響應並在其上運行一些業務邏輯我會拿出一些結果併發回給客戶。其他數據將被保存到數據存儲區(MySQL)

現在我認爲數據訪問層將是最終創建的laravel模型,但我很困惑理想的位置在哪裏API連接的東西,也爲業務邏輯的東西。

我的第一個想法是應該通過中間件來完成,但是在進一步閱讀文檔後,現在看起來這只是一個過濾器層。我當然可以把它放到模型中,這似乎滿足了'胖模型瘦控制器'的範例,但我不喜歡那種出於某種原因。我希望我的數據訪問層獨立於業務邏輯,我不想將所有這些廢話都放到控制器中,因爲這顯然是錯誤的。

那麼它應該去哪裏?

+0

出於好奇,如果您是Laravel的新手,您爲什麼從一個過時的版本開始?這是您正在採用的現有代碼庫嗎? – ceejayoz

+1

我實際上並沒有意識到這是一個過時的版本,直到我得到它所有的設置,我是這樣的:https://laravel.com/docs/4.2/quick#installation這是在laravel.com網站,並明確顯示安裝4.2版本,所以我推測這是最新的版本。 - 附錄 - 我得到這個鏈接的原因是,這是谷歌搜索的第一個結果'laravel quickstart' –

+0

好吧,你肯定會想用Laravel 5.3重新開始,不幸的是。在易於編碼和功能方面,4和5之間有巨大的改進。 – ceejayoz

回答

1

這是我的建議:

創建一個名爲ExternalAPI一個普通的PHP類,並將其保存在app文件夾中的文件夾叫的API中。然後創建一個方法來調用API並解析結果。你甚至可以把這個課程放在Facade之內,使它更易於使用。

然後創建另一個類負責接收解析的數據並執行業務邏輯。我們將其稱爲APIProcessor,並將它保存在app/API文件夾中。

最後,在控制器中,您將調用ExternalAPI類的方法,將結果傳遞給APIProcessor類,然後從中獲取結果並返回給用戶。

很明顯,這些名稱是不好,你應該選擇更好的名字來這些類符合你的業務領域,甚至選擇其他目錄來保存它們,如果你想。

這裏要做的另一件好事是創建一個接口,它將負責與API進行通信,所以如果有必要,您可以輕鬆地用另一個接口替換此類。

+0

太棒了,謝謝你的建議。我會將此標記爲正確的可能,但只有在我實際嘗試過之後(這可能需要我一段時間) –

+0

@DallasCaley沒問題,儘可能多地找出一個好的解決方案,當你這樣做時,分享與我們你的發現:) –