放入骨干自定义HTTP标头(Put a custom http header in backbone

2019-08-01 22:47发布

我创建与Tastypie的API,我想从主干网接入的API。 要发送的凭据我使用USER_ID和API_KEY。 我这样做是在Android和与卷曲这项工作很好,但我可以设置从骨干网的HTTP标头。

在袅袅我使用:

 curl --dump-header - -H "Accept: application/json" -H "Content-Type: application/json" -H "user_id: 32" -H "api_key: 69950" -X DELETE "http://127.0.0.1:8000/api/v1/deletenote/66/?format=json" 

在Android的Java的使用:

    HttpDelete requestDELETE = new HttpDelete();
    requestDELETE.setHeader("Content-type", "application/json");
    requestDELETE.setHeader("Accept", "application/json");
    requestDELETE.setHeader(Constants.HEADER_USER_ID, user_id);
    requestDELETE.addHeader(Constants.HEADER_API_KEY, key);

他们都工作很好,但是当我尝试这在骨干以下是我从其他页面发现后的响应,这没有奏效。

我想这一点:

var removeNote = new DeleteNoteModel({id:this.model.toJSON().id},{ query:this.model.toJSON().id});


removeNote.destroy({ 
        headers: {'user_id':dataWeb.get("id"),'api_key':dataWeb.get("api_key")}
        },{
                    async:false,
                    error: function(model, response){
                        console.log("KO_REMOVE_NOTE");
                        console.log(response);
                    },
                     success : function(model, response){
                        console.log("OK_REMOVE_NOTE");
                        console.log(response);
                     }
                }
    );

我把标题时,我打电话到呼叫摧毁,但这不发送anithing到服务器。

我在做什么在一个错误的模式?

谢谢大家。

Answer 1:

Tallmaris答案应该修复它为你虽然我会建议usign jQuery的ajaxSetup方法来设置标题为默认值,所有Ajax请求,因为我相信你需要他们所有的时间呢吧?

地方在那里你启动应用程序投放

$.ajaxSetup({
    headers: {
        'user_id':dataWeb.get("id"),
        'api_key':dataWeb.get("api_key")
    }
});

感谢您为您节省大量重复的代码:)保持干燥!

(很明显,你需要确保dataWeb是范围可用,你启动应用程序:))



Answer 2:

看来你是传递两个参数摧毁,只传递包含头和其他选项在一起的一个,除非括号顺序是一个错字。 试试这个:

removeNote.destroy({ 
    headers: {
        'user_id':dataWeb.get("id"),
        'api_key':dataWeb.get("api_key")
    }, // there was an extra close-open curly here...
    async:false,
    error: function(model, response){
        console.log("KO_REMOVE_NOTE");
        console.log(response);
    },
    success : function(model, response){
        console.log("OK_REMOVE_NOTE");
        console.log(response);
    }
});


文章来源: Put a custom http header in backbone