當後台已經完成之後就可以開始開 API 給前台用了,但在開始之前先介紹一下常見的分層方法,常見的分層會從 Route 、 Controller 、 Service 、 Repository、Model、Resource、Response 來組合而成。
Route:
負責將傳遞進來的 Request 解析後指向指定的 Controller 處理。
Controller:
商務邏輯的中樞,流程的控制,利用這個 Service 執行各式各樣的事件,或是取得所需資料,匯集全部的功能的資料後交給 Response 回覆給前台。
Service:
專業的匠人,負責處理專精的事情,例如金流、物流、商品等等專業邏輯,可以將其想為一個專門的套件都放在這裡,常常利用 composer require 使用的套件大致上都屬於這個層級的應用。
Repository:
實際撈取資料的物件、搭配各種條件搭配選擇,在小型專案中有時不會用到。
Model:
與 table 之間的各種設定,如果沒有使用 Repository 層的時候也會負責資料的撈取。
Resource:
通常使用 Model 或是 Repository 撈取出來的資料是沒有經過任何的修改的,但有時會需要做一些格式的變化會使用 Resource 這一層來做修改。
Response:
前後端討論好的回覆格式寫在這一層,常見的格式會有:自定義狀態、 資料、要揭露的特殊訊息,要揭露的特殊訊息常用在當發生 Exception 時,並不會想讓使用者看到 Error 及 Stack trace,但也不能只有顯示一個系統異常,要搭配一些處理方法顯示給使用者,例如系統維修中、信用卡過期,請聯繫客服人員等資訊。
當開始使用這些層級就代表已經開始進去物件導向的概念了,所謂物件導向的概念就是希望把每個功能細拆出來獨立運作,不要用所謂的義大利麵式的 function programming 來寫 Code ,如此來達到容易復用、後續修改邏輯容易的好處。