php - Yii 中的 RESTful 服务器设计

标签 php rest yii

您好,我一直在网上搜索尽可能多的关于在 Yii 框架中创建 Restful 服务器的信息。

到目前为止我找到的所有示例都涉及编写处理一个模型(IE 主题或帖子)的 Restful 应用程序

我的问题的症结在于,我应该如何编写一个处理大量模型类型(即客户、品牌、项目、任务)的 restful 服务器?

每个模型对象都需要实现 CRUD 操作,例如 要创建新品牌,系统需要一个客户 ID,其他 CRUD 操作也是如此。

每个模型对象是否应该有自己的 RESTFUl 服务器,或者应该有一种 Controller 将 RESTFUL 请求路由到模型对象的相应 Rest Controller ? 是否应该有一个服务器像开关一样动态决定使用什么模型(个人不喜欢这个想法)

任何关于如何实现这种休息架构的建议都会非常棒

我认为还值得注意的是,我正在构建的服务器将在前端使用 sproutcore,并且只会返回 JSON,因此不需要任何类型的格式检测。

最佳答案

我正在 Yii 中开发 RESTful 应用程序。到目前为止一切正常。

  • 模特。我有两种模型:

    1. 通过 REST 接口(interface)管理(即创建/删除等)。我将它们命名为 resources 并放入单独的目录中,但从技术上讲它们是扩展 CActiveRecord 的模型。
    2. 应用程序使用但未向外界公开的内部模型。此外,从中扩展其他模型或资源的抽象模型类。

    资源实例可以从 REST 客户端发送的 XML 表示构造,并可以转换为 XML 表示。您可以定义一个基类 AbstractResource 来处理这个问题,并在必要时覆盖子资源中的构造/转换方法。

  • 一个资源对应一个 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/

相关文章:

php - 如何多次更新一个字段?

python - 在 Django Tastypie API 中包含子资源

php - Apache PHP/OSX Mavericks : - failed to open stream: Too many open files

java - 上传文件时来自 Jersey 的 400 错误请求

rest - 在使用HATEOAS时找到 Restful 资源?

yii - 仅在模块中加载 Yii Bootstrap

php - Yii PHP 框架 - 实现

javascript - Laravel 5.2 - Sweet Alert 确认框

php - Laravel Beyondcode websockets - 如果 verify_peer 为真则不起作用

javascript - 如何通过 Ajax 将带有表单值的 js 对象数组发送到电子邮件