RESTful API - 如何删除动词并在GET,POST,PUT,DELETE之外保留特殊操作?

时间:2012-07-26 17:50:34

标签: api codeigniter rest restful-url restful-architecture

问题

我们如何使资源不是动词...但仍然在默认的GETPOSTPUTDELTE操作之外维持其特殊操作?< / p>

详细

我一直在寻找构建RESTful API的正确方法。那里有很多很棒的信息。现在我实际上正在尝试将此应用到我的网站上,并遇到了一些障碍。

我们网站的作用:

  • 我们的网站允许人们玩游戏并赢取奖品。

  • API将允许开发人员构建自己的游戏并使用我们的后端来收集,验证,存储用户信息并发放奖品。

情景:

开发人员将创建他们的游戏,然后调用我们的API让玩家玩游戏(play_game)。这个play_game方法结合了我们不希望开发人员独立运行的多个函数。

以下是play_game调用在服务器上执行的操作:

  1. 它接受开发者想要存储的玩家数据。
  2. 验证数据(将其与控制面板中的规则设置进行比较)
  3. 计算应该给予的奖品。
  4. 返回开发者获得的奖品。
  5. 此外,幕后还有多种功能可以像发送电子邮件一样触发。
  6. 资源 这是我们当前的资源:

     http://site.com/api/play_game
    

    问题

    这不符合RESTful API中没有动词的想法。

    我们如何使此资源不是动词...但仍然在默认GETPOSTPUTDELTE操作之外维持其特殊操作?< / p>

    备注:

    在询问this question后,我决定使用Phil Sturgeons RESTful Framework ......除非有人有更好的主意。

1 个答案:

答案 0 :(得分:1)

您可以将以下代码放入 applications / routes.php

$route['(.*)'] = 'api';

然后您可以访问您的API,如: http://site.com/play_game

<强> BUT

您只能访问ONE控制器(您的api控制器) 希望它有所帮助