系統開發懶人大絕招: GeneralAPI

前言:

繼上一篇提到,將Controller, Model, Repository的命名統一之後

Controller Model Repository 搭配Dto的快速開發架構

我們可以得到一個非常簡單的Create流程

而我們做系統,最常遇到的不外乎Create , Update, Delete, Read 四種資料流程了

因此我們更近一步的除了Create以外,也把其他流程做完,並且包含在BaseController中,也就成了一個GenenralApi了

怎麼做:

依照上面的邏輯,我們統整如下

可以發現,基本上就是呼叫repository中預先定義好的方法,然後傳入該有的Dto資訊

為了方便管理,我們將以上寫成Traits,大概像這樣子

然後在BaseController中引用進來

這樣一來,所有繼承了這個BaseController的Controller都已經擁有預設的CRUD Api邏輯了

如果照上一篇的範例來看,我的CustomerController幾乎不用寫,只要extend BaseController即可

例外的調整怎麼辦 :

寫到這邊一定有人會說,哪有可能這麼剛好每一個api都只要寫入資料就可以

是的,沒有錯當然事情不會這麼簡單,我們還是舉CustomerController為例

當今天要新增一筆客戶資料的時候,需要多做額外的商業邏輯可以怎麼做呢?

答案就是,覆寫就可以了,這個範例覆寫了create function,在這個之中可以客製化的描述所需要的邏輯

最後,將處理完要入庫的資料放在$payload中,replace回$request

最後一行,我們還是呼叫parent::create來做入庫的動作

這樣一來,無論需要做到多複雜的邏輯CRUD基本上就已經做完