簡體   English   中英

CakePHP Restful API路由到一組控制器

[英]CakePHP restful API routing to a set of controllers

我想知道是否有可能在Cakephp中設置一條路由,以允許我路由到設置了前綴的一組控制器。 我想要做的是復制大多數控制器,但要使用REST API。

我想仍然擁有網站本身的所有默認控制器,但有一個產品控制器,例如,它僅返回JSON 為此,我想將所有api控制器移動到一個子文件夾中,並通過檢測/api/controllername路由到它們。

這可能甚至是正確的方法嗎?

我想要做的是復制大多數控制器,但要使用REST API。

餿主意。 恕我直言。 您將很可能復制代碼並將代碼分散到各處。 將其放在一個地方。 這句話是一個指標,使我認為您的控制器中必須有很多邏輯。 將其移動到模型,胖模型。

有幾種更好的方法可以做到這一點。

  • 使用前綴路由到相關控制器內的API方法(api / v1 / foo / bar-> ControllerName :: api_actionName())
  • 實現一個調度模型方法的API控制器(api / v1 / foo / bar-> FooModel :: barMethod($ queryParam1,$ queryparam2,...)
  • 實現位於模型和控制器之間的服務層,並從第二建議中實現調度程序過濾器或API控制器,以調度服務方法。 然后,您將使用服務而不是模型。 控制器<->服務<->模型。 為了很好地實現這一點,需要一定的框架和設計模式經驗。 如果做得不好,可能會帶來更多的問題,而不是收益。
  • 如果它或多或少是簡單的API,並且API邏輯與您的操作類似,則可以簡單地重新使用您已經擁有的相同控制器操作,而僅使用內置的REST和JSON / XML視圖序列化,並且仍然可以使用路由來創建他們的理想路線(api / v1 / ...)。 然后,如果將控制器稱為API,則也可以執行條件檢查。

取決於您選擇哪一個,我已經看到並使用了它們,它們都可以工作,不同之處主要在於所需的實現和抽象級別。 但是,關鍵是編寫干凈且干燥的代碼,並關心SoC

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM