有没有办法在模型上添加更多的休息绑定,然后只有四个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'
}, {
});
答案 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方法都是关于动词的。
这有助于使事情更清楚一点吗?