Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CakePHP restful API路由到一组控制器_Php_Api_Rest_Cakephp_Routing - Fatal编程技术网

CakePHP restful API路由到一组控制器

CakePHP restful API路由到一组控制器,php,api,rest,cakephp,routing,Php,Api,Rest,Cakephp,Routing,我想知道是否可以在Cakephp中设置一个路由,允许我路由到一组设置了前缀的控制器。我要做的是复制我的大多数控制器,但要使用RESTAPI 我希望站点本身仍然有所有默认的控制器,但是有一个只返回JSON的产品控制器。为此,我想将所有api控制器移动到一个子文件夹中,并通过检测/api/controllername路由到它们 这是可能的,甚至是实现这一目标的正确方法吗 我想做的是复制我的大多数控制器,但一个 RESTAPI 坏主意。依我拙见您很可能会复制代码,并将代码分散到任何地方。把它放在一个地

我想知道是否可以在
Cakephp
中设置一个路由,允许我路由到一组设置了前缀的控制器。我要做的是复制我的大多数控制器,但要使用RESTAPI

我希望站点本身仍然有所有默认的控制器,但是有一个只返回
JSON
的产品控制器。为此,我想将所有api控制器移动到一个子文件夹中,并通过检测
/api/controllername
路由到它们

这是可能的,甚至是实现这一目标的正确方法吗

我想做的是复制我的大多数控制器,但一个 RESTAPI

坏主意。依我拙见您很可能会复制代码,并将代码分散到任何地方。把它放在一个地方。这句话是一个指标,让我觉得你必须在你的控制器很多逻辑。把它移到模特儿身上,胖模特儿

有几种更好的方法可以做到这一点

  • 使用前缀路由到相关控制器内的API方法(API/v1/foo/bar->ControllerName::API_actionName())
  • 实现一个分派模型方法的API控制器(API/v1/foo/bar->FooModel::barMethod($queryParam1,$queryparam2,…)
  • 实现一个位于模型和控制器之间的服务层,并实现第二个建议中的dispatcher筛选器或API控制器来调度服务方法。您将使用服务而不是模型。控制器服务模型。要很好地实现这一点,需要具备框架和设计模式方面的一些经验红色。如果做得不好,可能会造成更多的问题而不是好处-IMHO
  • 如果它或多或少是一个简单的API,并且API逻辑与您的操作类似,那么您可以简单地重复使用您已经拥有的相同控制器操作,只需使用序列化,并且仍然可以使用路由为它们创建一个奇特的路由(API/v1/…)。然后,如果控制器被称为API,您还可以执行条件检查
这取决于你选择哪一个,我已经在实践中看到并使用了它们,它们都很有效。区别主要在于你需要的实现和抽象级别。然而,关键是要编写干净干练的代码并关心它们

我想做的是复制我的大多数控制器,但一个 RESTAPI

坏主意。嗯。你很可能会复制代码,然后把代码分散到任何地方。把它放在一个地方。这句话让我觉得你的控制器中有很多逻辑。把它移到模型上,胖模型上

有几种更好的方法可以做到这一点

  • 使用前缀路由到相关控制器内的API方法(API/v1/foo/bar->ControllerName::API_actionName())
  • 实现一个分派模型方法的API控制器(API/v1/foo/bar->FooModel::barMethod($queryParam1,$queryparam2,…)
  • 实现一个位于模型和控制器之间的服务层,并实现第二个建议中的dispatcher筛选器或API控制器来调度服务方法。您将使用服务而不是模型。控制器服务模型。要很好地实现这一点,需要具备框架和设计模式方面的一些经验红色。如果做得不好,可能会造成更多的问题而不是好处-IMHO
  • 如果它或多或少是一个简单的API,并且API逻辑与您的操作类似,那么您可以简单地重复使用您已经拥有的相同控制器操作,只需使用序列化,并且仍然可以使用路由为它们创建一个奇特的路由(API/v1/…)。然后,如果控制器被称为API,您还可以执行条件检查
这取决于你选择哪一个,我已经在实践中看到并使用了它们,它们都很有效。区别主要在于你需要的实现和抽象级别。然而,关键是要编写干净干练的代码并关心它们

我想做的是复制我的大多数控制器,但一个 RESTAPI

坏主意。嗯。你很可能会复制代码,然后把代码分散到任何地方。把它放在一个地方。这句话让我觉得你的控制器中有很多逻辑。把它移到模型上,胖模型上

有几种更好的方法可以做到这一点

  • 使用前缀路由到相关控制器内的API方法(API/v1/foo/bar->ControllerName::API_actionName())
  • 实现一个分派模型方法的API控制器(API/v1/foo/bar->FooModel::barMethod($queryParam1,$queryparam2,…)
  • 实现一个位于模型和控制器之间的服务层,并实现第二个建议中的dispatcher筛选器或API控制器来调度服务方法。您将使用服务而不是模型。控制器服务模型。要很好地实现这一点,需要具备框架和设计模式方面的一些经验红色。如果做得不好,可能会造成更多的问题而不是好处-IMHO
  • 如果它或多或少是一个简单的API,并且API逻辑与您的操作类似,那么您可以简单地重复使用您已经拥有的相同控制器操作,只需使用序列化,并且仍然可以使用路由为它们创建一个奇特的路由(API/v1/…)。然后,如果控制器被称为API,您还可以执行条件检查
这取决于你选择哪一个,我已经在实践中看到并使用了它们,它们都很有效。区别主要在于你需要的实现和抽象级别。然而,关键是要编写干净干练的代码并关心它们

我想做的是复制我的大多数控制器,但一个 RESTAPI

坏主意。嗯。你很可能会复制代码,然后把代码分散到任何地方。把它放在一个地方。这句话是一个指标,它让我觉得你需要更多的逻辑