0

据我所知,REST Web 服务的独特之处在于资源概念。一切都应该围绕资源及其 CRUD 操作进行。假设一个资源是播放器资源,我可以通过链接http://mydomain.com/players.xml检索播放器列表,第 5 个播放器可以通过http://mydomain.com/players/5.xml访问,并且依此类推,使用适当的 HTTP 方法,我可以执行不同的 CRUD 操作。

现在在客户端的问题是:如果我需要显示一个包含玩家得分的表格(您可以假设该表格是动态构建的,查询玩家的数据库表)怎么办?在我看来,这个表不是真正的资源(我不能删除表,也不能编辑或添加新表)。

那么真正的问题是(考虑到我使用的是 CakePHP 框架):我能做些什么来让我的玩家的桌子不破坏玩家控制器的 RESTish 风格?

我的第一个想法是:将方法添加getTable()到播放器控制器的现有四个 CRUD 方法(index()、、和)中view(),修改配置文件以使所有 REST API 都可以在路径下访问(即http://mydomain.com/rest/players /5.xml),而所有其他非 RESTFUL 服务将在路径下可访问(即http://mydomain.com/nonrest/players/getTablehttp://mydomain.com/nonrest/players/getTable.xml) . 通过这种方式,API 的客户端肯定会知道在路径下尊重 REST 范式。是一个好的解决方案吗?你还有别的想法吗?edit()delete()routes.phprestnonrestrest

4

1 回答 1

2

您不需要单独的nonrest层次结构;绝对没有错http://mydomain.com/players/5/score.xml。仅仅因为资源是只读的,并不会因此使它成为资源以外的东西。

于 2013-01-29T00:45:14.007 回答