使用AngularJS,我不想设置全局$ http.defaults.headers.common.我可以在每次$ resource调用时发送自定义标头吗?

Dai*_*ynn 4 javascript http-post angularjs angularjs-resource angularjs-http

我正在调用一个我无法控制的后端服务器.目前它正在使用这样的jQuery ajax:

return $.ajax({
    type: "POST",
    url: "/api/cases/store",
    contentType: "application/json",
    data: JSON.stringify(parameters),
    headers: { "Authorization": cred } : {}
}) // ... etc.
Run Code Online (Sandbox Code Playgroud)

我想将它转换为使用该$resource服务,并让它工作这样做

$http.defaults.headers.common['Authorization'] = cred;
return $resource('/api/cases/store').save();
Run Code Online (Sandbox Code Playgroud)

唯一的问题是我必须$http使用auth凭据设置全局服务默认值.

我看到你应该能够通过$http调用传递自定义标头,现在通过$resource调用,但我找不到任何关于如何在我的情况下执行它的示例(使用POST).

我在AngularJS文档中也找不到任何相关内容.你们怎么想出这个东西?文档非常糟糕!

zum*_*ard 6

而不是这个:

$http.defaults.headers.common['Authorization'] = cred;
return $resource('/api/cases/store').save();
Run Code Online (Sandbox Code Playgroud)

做这个:

return $resource('/api/cases/store', {}, {
    save: {
        method: 'POST',
        headers: { 'Authorization': cred }
    }
}).save();
Run Code Online (Sandbox Code Playgroud)

请注意,您必须使用"保存"作为操作,第三个参数中的第一个键.无法测试,所以让我知道它是否有效.

并且我同意.文档没有谈论它.看一下angular-resource.js中$ resource源代码中的DEFAULT_ACTIONS列表