【问题标题】:REST API controller/routes alongside normal html viewsREST API 控制器/路由以及普通的 html 视图
【发布时间】:2014-03-27 21:06:58
【问题描述】:

我有一个 CakePHP 应用程序,想加入一个简单的 REST API,起初只用于没有身份验证的 GET 请求。

我有常规的结构,例如:

  • 后(后模型),
  • postsController(posts 控制器),方法名称与路由匹配。
  • 视图/帖子(帖子视图 - 例如 index.ctp 等)

假设我想要一些 REST API 路由,我将如何将它们与我的普通视图和控制器方法一起添加。我认为有一个单独的apiPostsController 可能是个好主意,但我不确定如何实施。

路由明智,对于给定的 example.com/posts/view/123,API 等价物可能是 example.com/api/v1/posts/view/123。

我该如何实现这个?

看看the book,给定的指令利用了传统的控制器和视图,它们已经用于实际查看应用程序。

【问题讨论】:

    标签: php rest cakephp cakephp-2.0


    【解决方案1】:

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

    如果您的 API 方法表现如此不同,您仍然可以使用前缀路由并为方法添加前缀 api,例如:api_some_action()。

    我猜你的 API 使用的是 XML 或 Json,请参阅本书的这一章如何将其与常规 HTML 视图一起归档:JSON and XML Views

    Router::connect('/api/:version/:controller/:action/*',
        array(),
        array(
            'version' => 'v1|v2',
        )
    );
    

    这条路线应该可行。

    【讨论】:

    • 非常感谢。那么,鉴于我已经有非 api 方法(索引、视图、编辑等),这是否意味着我需要在路由中添加我的 api 方法的前缀?例如。 /posts/api_view/123
    • 阅读本节book.cakephp.org/2.0/en/development/routing.html#prefix-routing 如果您想使用前缀路由,则上述路由无需前缀路由即可工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多