8

Tastypieを使用してAPIを作成していますが、バックボーンからAPIにアクセスしたいと思います。クレデンシャルを送信するには、user_idとapi_keyを使用します。私はこれをAndroidとcurlで行い、これはうまく機能しますが、バックボーンから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" 

そしてアンドロイド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);

どちらもうまく機能しますが、ページの他の投稿で見つけた応答に従ってBackboneでこれを試してみると、機能しませんでした。

私はこれを試しています:

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);
                     }
                }
    );

destroy呼び出しを呼び出すときにヘッダーを配置していますが、これはサーバーにanithingを送信しません。

私は間違ったモードで何をしていますか?

ありがとうございます。

4

2 に答える 2

19

Tallmarisの回答で修正されるはずですが、jQuery ajaxSetupメソッドを使用して、ヘッダーをすべてのajaxリクエストのデフォルト値として設定することをお勧めします。とにかく、ヘッダーは常に必要だと思います。

アプリを起動する場所に配置

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

そのおかげで、繰り返されるコードをたくさん節約できます:)乾いた状態に保ってください!

(明らかに、アプリを起動した場所の範囲でdataWebが使用可能であることを確認する必要があります:))

于 2012-10-25T18:37:03.413 に答える
3

括弧の順序がタイプミスでない限り、破棄する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);
    }
});
于 2012-10-25T18:11:50.953 に答える