js服务调用改变请求类型

backbone.js service calls changes the request type

本文关键字:请求 类型 改变 调用 服务 js      更新时间:2023-09-26
[WARN][TiAPI   (  480)]  [REST API] apiCall  [object Object]
[WARN][TiAPI   (  480)]  [REST API TYPE] apiCall  POST
[WARN][TiAPI   (  480)]  [object Object]
[WARN][TiAPI   (  480)]  [REST API] apiCall  [object Object]
[WARN][TiAPI   (  480)]  [REST API TYPE] apiCall  PUT

当我第一次访问服务时,服务以POST类型调用,但第二次它发送PUT而不是POST。我怎么能让请求类型一直POST。

http://backbonejs.org/Model-save

Backbone做POST是因为它不知道要把东西放到哪个特定的URL。但是,当您事先知道URL时,PUT才是正确的方法。默认情况下,Backbone使用"id"属性(如果存在)来构建URL。因此,如果没有"id",它假定您希望服务器填充它,如下所示:

=>
POST {"foo":"bar"} /things
<=
200 OK {"foo":"bar","id":"a36f933"}

但是,如果您在客户端上生成id,或者如果您已经知道id, Backbone将执行PUT操作,并假设服务器将接受它,如下所示:

=>
PUT {"foo":"bar","id":"12345abc"} /things/12345abc
<=
200 OK {"foo":"bar","id":"12345abc"}

这完全符合RESTful url的工作方式,以及非幂等POST请求与幂等PUT请求背后的意图和含义。如果你理解了幂等性,Backbone的行为就开始有意义了:)

http://en.wikipedia.org/wiki/Idempotence

http://quoderat.megginson.com/2011/11/17/post-put-idempotence-and-self-identification/

Backbone在默认情况下使用CRUD与数据端点同步。这意味着第一个API调用是POST(用于创建动作),然后,在第二次调用时,由于模态有id, Backbone将发送PUT(用于更新动作)

要强制使用POST,您需要重写Backbone.sync.

相关文章: