Sja*_*sma 5 php rest yii backbone.js
我试图在Yii中集成Backbone,因此我需要REST.所以我安装了一个yii扩展,restfullyii,它使用了需要传递给请求的用户名和密码.问题是我不知道如何使用Backbone这样做.
想要的请求示例:
List
curl -i -H "Accept: application/json" -H "X_REST_USERNAME: admin@restuser" -H "X_REST_PASSWORD: admin@Access" http://yii-tester.local/api/sample/
curl -i -H "Accept: application/json" -H "X_REST_USERNAME: admin@restuser" -H "X_REST_PASSWORD: admin@Access" http://yii-tester.local/api/sample/limit/1
curl -i -H "Accept: application/json" -H "X_REST_USERNAME: admin@restuser" -H "X_REST_PASSWORD: admin@Access" http://yii-tester.local/api/sample/limit/10/5 (limit/offeset)
Run Code Online (Sandbox Code Playgroud)
当前的错误响应,完全有意义..:
{
"success": false,
"message": "You are not authorized to proform this action.",
"data": {"errorCode":500}
}
Run Code Online (Sandbox Code Playgroud)
有没有人知道如何在整个Backbone中发送这样的值?
Backbone 将其 XHR 请求委托给 jQuery/Zepto,这就是您必须修改的内容。
$.ajaxSetup最简单的解决方案可能是通过标题选项提供默认选项
标头(1.5 添加)
默认值:{}与请求一起发送的附加标头键/值对的映射。该设置是在调用beforeSend函数之前设置的;因此, headers 设置中的任何值都可以在 beforeSend 函数中被覆盖。
你可以这样设置:
$.ajaxSetup({
headers:{
X_REST_USERNAME: "admin@restuser",
X_REST_PASSWORD: "admin@Access"
}
});
Run Code Online (Sandbox Code Playgroud)
发送的每个请求都将具有自定义标头。请参阅http://jsfiddle.net/nikoshr/j5Rr4/
或者您可以向每个请求传递附加选项,Backbone 会将它们转发给 jQuery:
var m = new Backbone.Model();
m.fetch({
headers:{
X_REST_USERNAME: "admin@restuser",
X_REST_PASSWORD: "admin@Access"
}
});
Run Code Online (Sandbox Code Playgroud)
http://jsfiddle.net/nikoshr/j5Rr4/2/
最后,您可以覆盖 Backbone.sync 为每个请求添加标头:
Backbone.realsync = Backbone.sync;
Backbone.sync = function(method, model, options) {
options || (options = {});
options.headers = {
X_REST_USERNAME: "admin@restuser",
X_REST_PASSWORD: "admin@Access"
};
return Backbone.realsync.call(model, method, model, options);
};
var m = new Backbone.Model();
m.fetch();
Run Code Online (Sandbox Code Playgroud)
http://jsfiddle.net/nikoshr/j5Rr4/4/
| 归档时间: |
|
| 查看次数: |
1503 次 |
| 最近记录: |