canjs模型上有更多的休息功能

时间:2013-01-17 19:53:47

标签: javascript rest canjs canjs-model

有没有办法在模型上添加更多的休息绑定,然后只有四个CRUD函数?

var Customer = can.Model({
    findAll: 'GET /customer',    
    findOne: 'GET /customer/{id}',
    create: 'POST /customer',
    update: 'PUT /customer/{id}',
    destroy: 'DELETE /customer/{id}'
    //maybeAnOtherMethod: 'PUT /customer/{id}/activate'
}, {

});

1 个答案:

答案 0 :(得分:2)

REST背后的想法是您拥有这些资源的资源和行动。资源本身由URL描述,该动作由http动词描述。

因此,GET是用于阅读的操作,/customer/{id}描述了您要加载的资源。这可以。所以,你的五种方法都很好,因为can.Model is designed to handle CRUD functionality with a basic REST interface

最后一个(注释)的问题是你将资源和动作混合在url中。 “激活”绝对是一个动词,没有资源。因此它不属于那里,但它应该是一个http动词。这就是为什么你没有找到对这种REST接口编程方式的支持 - 仅仅因为它不是REST。

虽然您可以重新设计API以将activate视为资源,但更有可能的是,客户的状态为已激活或未激活是customer资源的一部分。您将使用update方法,因为您正在更改有关客户的信息。在CanJS中,它看起来像这样:

Customer.findOne({id: 5), function( customer ){
  customer.attr('active', true);
  customer.save();
}

简而言之:在REST中,网址都是关于名词的,http方法都是关于动词的。

这有助于使事情更清楚一点吗?