2017-06-29 104 views
5

是否可以使用fetch API爲每個請求設置默認標頭?
我想要做的是設置一個Authorization標頭,只要localStorage中有一個json Web令牌。我目前的解決方案是使用此功能設置的標頭: 爲每個提取()請求設置默認標頭

export default function setHeaders(headers) { 
    if(localStorage.jwt) { 
     return { 
      ...headers, 
      'Authorization': `Bearer ${localStorage.jwt}` 
     } 
    } else { 
     return headers; 
    } 
} 

中提取請求設置頭則是這樣的:

return fetch('/someurl', { 
     method: 'post', 
     body: JSON.stringify(data), 
     headers: setHeaders({ 
      'Content-Type': 'application/json' 
     }) 
    }) 

但是,必須有一個更好的方式做這個。如果有任何幫助,我目前正在開發React/Redux/Express應用程序。

+0

如果由於某種原因你不希望使用現有的包裝器讀取,寫入一個添加授權頭應該是直線前進。 –

回答

3

你可以使用Axios,而不是取,用攔截器

const setAuthorization = (token) => { 

    api.interceptors.request.use((config) => { 
    config.headers.Authorization = 'Bearer ' + token; 
    return config; 
    }); 

} 

其中API是一個愛可信對象與基本URL

const api= axios.create({ 
    baseURL: 'http://exemple.com' 
}); 

當你得到你的令牌,U盤只需要調用函數setAuthorization。

來源:Axios README.md