簡體   English   中英

使用AngularJS,我不想設置全局$ http.defaults.headers.common。 我可以在每次$ resource調用時發送自定義標頭嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM