您好,我一直在网上搜索尽可能多的关于在 Yii 框架中创建 Restful 服务器的信息。
到目前为止我找到的所有示例都涉及编写处理一个模型(IE 主题或帖子)的 Restful 应用程序
我的问题的症结在于,我应该如何编写一个处理大量模型类型(即客户、品牌、项目、任务)的 restful 服务器?
每个模型对象都需要实现 CRUD 操作,例如 要创建新品牌,系统需要一个客户 ID,其他 CRUD 操作也是如此。
每个模型对象是否应该有自己的 RESTFUl 服务器,或者应该有一种 Controller 将 RESTFUL 请求路由到模型对象的相应 Rest Controller ? 是否应该有一个服务器像开关一样动态决定使用什么模型(个人不喜欢这个想法)
任何关于如何实现这种休息架构的建议都会非常棒
我认为还值得注意的是,我正在构建的服务器将在前端使用 sproutcore,并且只会返回 JSON,因此不需要任何类型的格式检测。
最佳答案
我正在 Yii 中开发 RESTful 应用程序。到目前为止一切正常。
模特。我有两种模型:
- 通过 REST 接口(interface)管理(即创建/删除等)。我将它们命名为
resources
并放入单独的目录中,但从技术上讲它们是扩展CActiveRecord
的模型。 - 应用程序使用但未向外界公开的内部模型。此外,从中扩展其他模型或资源的抽象模型类。
资源实例可以从 REST 客户端发送的 XML 表示构造,并可以转换为 XML 表示。您可以定义一个基类
AbstractResource
来处理这个问题,并在必要时覆盖子资源中的构造/转换方法。- 通过 REST 接口(interface)管理(即创建/删除等)。我将它们命名为
一个资源对应一个 Controller 。 Controller 通常有四个 CRUD 操作,可能还有 List 操作。后者用于搜索操作。使用基于类的操作而不是内联操作是个好主意,这样您就可以在不同的 Controller 中重用您的操作。例如,我所有的 Controller 都使用
ListAction
进行搜索。我有一个基础 Controller ,它以
application/xml
的形式发送所有内容。它还处理 HTTP 状态代码和 handles all errors .所有来自客户端的 XML 输入都使用 Relax NG schemes 进行验证.您将需要 json 验证器。
TDD 棒极了!我已经广泛测试了几乎所有的东西。它在进行重构时有很大帮助。使用测试驱动开发。为所有模型、资源和应用程序组件编写单元测试。此外,编写功能测试更容易,因为您没有 HTML/CSS/等。您只需发送 HTTP 请求并检查返回的 header 、代码和内容。我使用了 php_curl 扩展,效果很好。由于您可能会执行 PUT、DELETE 和其他奇特的请求,因此您必须手动编写每个 HTTP 请求。就我而言,每个请求还需要签名(这涉及计算校验和、哈希等),因此几乎不可能手动测试我的应用程序。
我还推荐这本好书:RESTful Web Services .
关于php - Yii 中的 RESTful 服务器设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6427904/