Php RESTAPI控制器/路由与普通html视图

Php RESTAPI控制器/路由与普通html视图,php,rest,cakephp,cakephp-2.0,Php,Rest,Cakephp,Cakephp 2.0,我有一个CakePHP应用程序,并希望合并一个简单的RESTAPI,首先只用于未经身份验证的GET请求 我有传统的结构,例如: 邮政(邮政模型) postsController(posts控制器),方法名称与路由匹配 视图/帖子(帖子视图-例如index.ctp等) 假设我想要一些RESTAPI路由,我将如何将它们添加到我的常规视图和控制器方法中。我认为拥有一个单独的apispostscontroller可能是个好主意,但我不确定如何实现 就路由而言,对于给定的example.com/pos

我有一个CakePHP应用程序,并希望合并一个简单的RESTAPI,首先只用于未经身份验证的GET请求

我有传统的结构,例如:

  • 邮政(邮政模型)
  • postsController(posts控制器),方法名称与路由匹配
  • 视图/帖子(帖子视图-例如index.ctp等)
假设我想要一些RESTAPI路由,我将如何将它们添加到我的常规视图和控制器方法中。我认为拥有一个单独的
apispostscontroller
可能是个好主意,但我不确定如何实现

就路由而言,对于给定的example.com/posts/view/123,API等价物可能是example.com/API/v1/posts/view/123

我该如何实现这一点


请看,给定的说明使用了传统的控制器和视图,这些控制器和视图已经用于实际查看应用程序。

为什么您认为您需要另一个控制器?这不是干的。当你这样做的时候,你会复制很多

如果您的API方法的行为有这么大的不同,您仍然可以使用前缀路由,并使用API作为方法的前缀,例如:API_some_action()

我猜您的API使用的是XML或Json,请参阅本书的本章如何将其与常规HTML视图一起存档:


这条路线应该行。

非常感谢。因此,如果我已经有了非api方法(索引、视图、编辑等),这是否意味着我需要在路由中为我的api方法添加前缀?例如,
/posts/api_view/123
阅读本节上述路线无需前缀路由,如果您想使用前缀路由,您必须熟练掌握。
Router::connect('/api/:version/:controller/:action/*',
    array(),
    array(
        'version' => 'v1|v2',
    )
);