js服务调用改变请求类型
backbone.js service calls changes the request type
[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.
相关文章:
- "日期“;AJAX请求返回的类型值未定义
- "所请求的名称已经作为不同类型的“”存在;HTTP 409响应错误
- 在 Angular2 中构建多部分/表单数据 POST 请求并验证输入类型文件
- Angular 2:如何在 GET 和 POST 请求中设置 double、float、int 和布尔类型参数
- 有没有任何方法可以从javascript进行跨域请求,并访问它可能生成的错误响应类型(401404等)
- 为什么当我指定POST时,即使我已经尝试了类型和方法选项,我的ajax代码仍然会触发GET请求
- Swagger'获取'请求在响应时总是以text/html/Accept类型返回,而不是applicat
- 使用 Meteor HTTP 在 Spotify API 上请求access_token时不受支持的授权类型错误
- 检查 HTTP GET 请求返回的文件类型
- 客户端将多部分/表单数据请求的文件部分的内容类型设置错误
- POST 请求标头中的内容类型中缺少表单数据边界
- 如何在 onsubmit 事件中检查请求类型(ajax 或 no)
- 类型错误:在 ASP.NET 中触发 AJAX 请求时,未定义不是一个函数
- Ajax FormData 使用 POST 类型,但在 PHP 文件中无法获取任何请求
- 在 Node.js 服务器内发出异步请求错误:“类型错误:对象 #<对象> 没有方法'_implicitHeader'”
- 一个额外的未知参数,带有数据类型“脚本”的 ajax 请求
- 如何在不使用 Blob 的情况下将内容类型添加到多部分请求
- 根据 Zend Framework 2 中的请求类型在同一路由上触发不同的操作
- 如何更改Ajax请求类型和数据
- js服务调用改变请求类型