gpt4 book ai didi

javascript - canjs 模型上的更多 restfunctions

转载 作者:行者123 更新时间:2023-11-29 14:58:16 26 4
gpt4 key购买 nike

有没有办法在模型上添加更多的 rest 绑定(bind),然后只添加四个 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'
}, {

});

最佳答案

REST 背后的理念是您拥有资源以及对这些资源的操作。资源本身由 URL 描述,操作由 http 动词描述。

因此,GET是读取的 Action ,/customer/{id}描述的是你要加载的资源。这可以。所以,你所有的五个方法都很好,因为 can.Model is designed to handle CRUD functionality with a basic REST interface .

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

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

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

长话短说:在 REST 中,url 都是关于名词的,http 方法都是关于动词的。

这有助于让事情变得更清楚一点吗?

关于javascript - canjs 模型上的更多 restfunctions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14387020/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com