[英]With AngularJS, I don't want to set the global $http.defaults.headers.common. Can I send my custom header with each $resource call?
我正在調用一個我無法控制的后端服務器。 目前它正在使用這樣的jQuery ajax:
return $.ajax({
type: "POST",
url: "/api/cases/store",
contentType: "application/json",
data: JSON.stringify(parameters),
headers: { "Authorization": cred } : {}
}) // ... etc.
我想將它轉換為使用$resource
服務,並讓它工作
$http.defaults.headers.common['Authorization'] = cred;
return $resource('/api/cases/store').save();
唯一的問題是我必須使用auth憑據設置全局$http
服務默認值。
我看到你應該能夠通過$http
調用傳遞自定義標頭,現在使用$resource
調用,但是我找不到任何關於如何在我的情況下執行此操作的示例(使用POST) 。
我在AngularJS文檔中也找不到任何相關內容。 你們怎么想出這個東西? 文檔非常糟糕!
而不是這個:
$http.defaults.headers.common['Authorization'] = cred;
return $resource('/api/cases/store').save();
做這個:
return $resource('/api/cases/store', {}, {
save: {
method: 'POST',
headers: { 'Authorization': cred }
}
}).save();
請注意,您必須使用“保存”作為操作,第三個參數中的第一個鍵。 無法測試,所以讓我知道它是否有效。
並且我同意。 文檔沒有談論它。 看一下angular-resource.js中$ resource源代碼中的DEFAULT_ACTIONS列表
$ resource文檔確實涵蓋了它,盡管閱讀肯定很難。 您必須為其執行自定義操作,並且您可以傳遞給配置的所有參數都不會列在$ resource頁面上。 您需要查看$ http docs頁面,了解配置對象的可能性。
$resource()
有3個參數:URL,默認參數對象和actions對象。 動作基本上將方法名稱映射到$ http configs。
您想要進行自定義操作,例如:
var MyResource = $resource('/myendpoint/', {}, { 'post': { method: 'POST', headers: {"Authorization" : cred}}); // and any other $http options you might want
這些操作轉換為MyResource對象上的方法,因此如果您願意,您可以將操作命名為更加語義而不僅僅是“發布”(例如,文檔頁面上的示例為信用卡資源設置了“收費”操作,例如)。
$ http的文檔非常可靠,與其網站上的大多數其他文檔一樣。
並且您可以在每個單獨的AJAX調用上絕對定義您的auth標頭。
嘗試這樣的事情:
$http({
method: 'POST',
url: 'serverUrl',
data: parameters,
headers: { Authorization: cred }
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.