Yii中的RESTful服务器设计

Mik*_*tes 2 php rest yii

嗨,我一直在网上搜寻尽可能多的信息,我可以得到我的mits关于在Yii框架中创建一个宁静的服务器.

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

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

每个Model对象都需要实现CRUD操作,例如,要创建新品牌,系统需要客户端ID,其他CRUD操作也需要.

每个模型对象是否应该有自己的RESTFUl服务器,或者应该有哪种控制器将RESTFUL请求路由到模型对象的相应Rest控制器?是否应该有一个服务器动态决定使用什么型号的交换机(个人不热衷于这个想法)

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

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

gal*_*han 10

我正在开发Yii中的RESTful应用程序.到目前为止一切都很好.

  • 楷模.我有2种型号:

    1. 通过REST接口管理(即创建/删除等).我打电话给他们resources并放入单独的目录,但从技术上讲,他们是扩展的模型CActiveRecord.
    2. 应用程序使用的内部模型,但不暴露于世界.此外,还扩展了其他模型或资源的抽象模型类.

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

  • 一个资源有一个控制器.控制器通常有四个CRUD操作,可能还有List操作.后者用于搜索操作.使用基于类的操作而不是内联操作是个好主意,因此您可以在不同的控制器中重用您的操作.例如,我的所有控制器都ListAction用于搜索.

  • 我有基本控制器,它发送所有内容application/xml.它还处理HTTP状态代码并处理所有错误.

  • 来自客户端的所有XML输入都使用Relax NG方案进行验证.你需要json验证器.

  • TDD摇滚!我已经对几乎所有东西进行了广泛测试.在进行重构时它会有很大帮助.使用TDD.为所有模型,资源和应用程序组件编写单元测试.此外,编写功能测试更容易,因为您没有HTML/CSS /等.您只需发送HTTP请求并检查返回的标头,代码和内容.我使用php_curl扩展,它工作得很好.由于您可能会执行PUT,DELETE和其他异常请求,因此您必须手动编写每个HTTP请求.在我的情况下,每个请求也需要签名(这涉及计算校验和,哈希等),因此几乎不可能手动测试我的应用程序.

我还推荐这本优秀的书:RESTful Web Services.