모든 fetch() 요청에 대한 기본 헤더 설정
fetch API를 사용하여 요청마다 기본 헤더를 설정할 수 있습니까?
내가 하고 싶은 것은, 내가 하고 싶은 것은,Authorization
json Web 토큰이 있을 때마다 헤더로 이동합니다.localStorage
현재의 솔루션은 다음과 같은 기능으로 헤더를 설정하는 것입니다.
export default function setHeaders(headers) {
if(localStorage.jwt) {
return {
...headers,
'Authorization': `Bearer ${localStorage.jwt}`
}
} else {
return headers;
}
}
다음으로, fetch 요구의 헤더를 설정하는 방법은 다음과 같습니다.
return fetch('/someurl', {
method: 'post',
body: JSON.stringify(data),
headers: setHeaders({
'Content-Type': 'application/json'
})
})
하지만 더 나은 방법이 있을 거야도움이 된다면 React/Redux/Express 앱을 개발 중입니다.
작성fetch
래퍼로 문제를 해결할 수 있습니다.
function updateOptions(options) {
const update = { ...options };
if (localStorage.jwt) {
update.headers = {
...update.headers,
Authorization: `Bearer ${localStorage.jwt}`,
};
}
return update;
}
export default function fetcher(url, options) {
return fetch(url, updateOptions(options));
}
또한 Axios 또는 다른 패키지가 더 좋다고 판단될 경우 어플리케이션 내의 모든 콜에 대해 요청 클라이언트를 쉽게 전환할 수 있다는 이점도 있습니다.그리고 다른 것도 할 수 있어요.options.body
오브젝트이며,'Content-Type: application/json
header를 클릭합니다.
대행 수신기를 사용하여 가져오기 대신 Axios를 사용할 수 있습니다.
const setAuthorization = (token) => {
api.interceptors.request.use((config) => {
config.headers.Authorization = 'Bearer ' + token;
return config;
});
}
여기서 Api는 기본 URL을 가진 Axios 개체입니다.
const api= axios.create({
baseURL: 'http://exemple.com'
});
토큰을 받으면 함수 세트를 호출하면 됩니다.허가.
출처 : Axios README.md
Andri Möll이 FetchDefaults.js 믹스인을 작성했습니다.fetch
이 명령어는 가져오기 기본값을 설정합니다.
var Url = require("url")
var assign = require("oolong").assign
var merge = require("oolong").merge
var PARSE_QUERY = false
var PROTOCOL_RELATIVE = true // Enable //example.com/models to mimic browsers.
exports = module.exports = function(fetch, rootUrl, defaults) {
if (typeof rootUrl === "string") rootUrl = parseUrl(rootUrl)
else defaults = rootUrl, rootUrl = null
return assign(exports.fetch.bind(null, fetch, rootUrl, defaults), fetch)
}
exports.fetch = function(fetch, rootUrl, defaults, url, opts) {
if (rootUrl != null) url = rootUrl.resolve(url)
if (typeof defaults === "function") defaults = defaults(url, opts)
return fetch(url, opts == null ? defaults : merge({}, defaults, opts))
}
function parseUrl(url) {
return Url.parse(url, PARSE_QUERY, PROTOCOL_RELATIVE)
}
빠르고 권장되지 않는 해킹은 기본값을 재정의하는 것입니다..fetch()
기능:
const oldFetch = window.fetch;
window.fetch = function() {
arguments[1].headers = { 'blahblah' : 'blabla' };
return oldFetch.apply(window, arguments);
}
코드는 테스트도 안 되고 미완성입니다.이 답변을 사용하기로 결정했을 경우,arguments.length
코드를 추가하여 기존 머리글을 보존하는 등나는 단지 더 많은 탐사를 위한 방향을 제시해주고 있을 뿐이다.
기본 가져오기 api를 재정의할 수 있습니다.
var originalFetch = window.fetch;
window.fetch = function (input, init) {
if (!init) {
init = {};
}
if (!init.headers) {
init.headers = new Headers();
}
// init.headers could be:
// `A Headers object, an object literal,
// or an array of two-item arrays to set request’s headers.`
if (init.headers instanceof Headers) {
init.headers.append('MyHeader', 'Value');
} else if (init.headers instanceof Array) {
init.headers.push(['MyHeader', 'Value']);
} else {
// object ?
init.headers['MyHeader'] = 'Value';
}
return originalFetch(input, init);
};
참고 자료:
언급URL : https://stackoverflow.com/questions/44820568/set-default-header-for-every-fetch-request
'source' 카테고리의 다른 글
WooCommerce에서 원본 이미지 잘라내기 사용 안 함 (0) | 2023.03.13 |
---|---|
woocommerce에서 가장 인기 있는 제품의 카테고리 목록을 얻는 방법 (0) | 2023.03.13 |
JSON.Parse','Uncatched SyntaxError:예기치 않은 토큰 o (0) | 2023.03.13 |
스프링 부트 MVC 템플릿이 로드되지 않음(404를 찾을 수 없음) (0) | 2023.03.13 |
Google 분석:추적 미설치 (0) | 2023.03.13 |