목차
- axios()의 매개변수 인 config 옵션 설정
- axios 인스턴스 생성
- 요청 config의 옵션
#1. axios객체 속성 및 메서드의 매개변수
기본적으로 명령어 메소드 사용 시에는 url, method, data 속성을 config에서 지정할 필요가 없다.
즉, 요청 메소드 명령어 사용 시 아래의 1~3의 방법중 하나로 url, method, data 속성 지정 가능하다.
1. 속성값으로 요청 메서드 작성 후 나머지는 config로 지정
axios.get(config)
또는
2. 속성값으로 요청메서드 작성, 첫번째 매개변수로 url, 나머지는 config로 지정
axios.post(url[,config])
또는
3. 속성값으로 요청 메서드 작성, 첫번째 매개변수로 url, 나머지는 config로 지정
axios.options(url[,data[,config]])
#2. 인스턴스 생성 - axios 인스턴스 커스텀
-config로 모두 설정 시
axios.create(config)
- 요청 명령어 메서드 사용 시
axios#get(url[,data[,config]])
자, 그럼 axios를 더 잘 사용하기 위하여 config에는 어떤 내용들이 들어가는 지 알아보자
#3. 요청 config의 옵션
-요청을 만드는 데 사용할 수 있는 config 옵션들
const instance = axios.create({
url: '/user', //필수값
method: 'get', // 디폴트가 get
baseURL: 'https://some-domain.com/api',
headers: { 'X-Requested-With': 'XMLHttpRequest' },
data: {
firstName: 'Fred'
},
// 바디로 전송하는 데이터의 대안 문법-POST 메소드인 경우 / 키가 아닌 값만 전송됨
data: 'Country=Brasil&City=Belo Horizonte',
transformRequest: [function (data, headers) {
// 데이터를 변환하려는 작업 수행
return data;
}],
transformResponse: [function (data) {
// 데이터를 변환하려는 작업 수행
return data;
}],
withCredentials: false, // 디폴트가 false
});
1. url
- 요청에 사용될 서버 URL
- config 옵션들 중 유일한 필수값, config 옵션으로 작성되던지 axios.method()로 작성되던지 무조건 작성되어야 함
2. method
- 요청을 생성할때 사용되는 메소드
- 디폴트는 get
3. baseURL
- url`이 절대값이 아닌 경우 `baseURL`은 URL 앞에 붙음.
- 상대적인 URL을 인스턴스 메서드에 전달하려면 `baseURL`을 설정하는 것이 좋음
4.headers
- 사용자 지정 헤더
- key:value의 형태로 작성 가능
5. data
- 요청 바디로 전송될 데이터
- 'PUT', 'POST', 'PATCH', 'DELETE' 메소드에서만 적용 가능
- 'PUT' 메서드의 경우 쿼리스트링 형태로 작성가능
6. transformRequest
- 요청 데이터를 서버로 전송하기 전에 변경할 수 있게 해줌
- 'PUT', 'POST', 'PATCH', 'DELETE' 메소드에서만 적용가능
- 마지막 함수는 Buffer, ArrayBuffer, FormData 또는 Stream의 인스턴스 또는 문자열을 반환해야함
- 헤더 객체를 수정 가능
- 미설정의 경우, 데이터 타입은 string, plain object, ArrayBuffer, ArrayBufferView, URLSearchParams 중 하나여야 함
- <미설정시>브라우저 전용: FormData, File, Blob
- <미설정시>Node 전용: Stream, Buffer
7. transformResponse
- 응답 데이터가 then/catch로 전달되기 전에 변경할 수 있게 해줌
8. withCredentials
- 자격 증명을 사용하여 사이트 간 액세스 제어 요청을 해야 하는지 여부를 나타냄
- 디폴트는 false
etc
아래의 config 옵션은 참고 정도만
// `params`은 요청과 함께 전송되는 URL 파라미터입니다.
// 반드시 일반 객체나 URLSearchParams 객체여야 합니다.
// 참고: null이나 undefined는 URL에 렌더링되지 않습니다.
params: {
ID: 12345
},
// `paramsSerializer`는 `params`의 시리얼라이즈를 담당하는 옵션 함수입니다.
// (예: https://www.npmjs.com/package/qs, http://api.jquery.com/jquery.param/)
paramsSerializer: function (params) {
return Qs.stringify(params, {arrayFormat: 'brackets'})
},
// `timeout`은 요청이 시간 초과되기 전의 시간(밀리초)을 지정합니다.
// 요청이 `timeout`보다 오래 걸리면 요청이 중단됩니다.
timeout: 1000, // 기본값은 `0` (타임아웃 없음)
// `adapter`'은 커스텀 핸들링 요청을 처리할 수 있어 테스트가 쉬워집니다.
// 유효한 Promise 응답을 반환해야 합니다. (lib/adapters/README.md 참고)
adapter: function (config) {
/* ... */
},
// `auth`는 HTTP Basic 인증이 사용되며, 자격 증명을 제공합니다.
// `auth`를 사용하면, `Authorization` 헤더가 설정되어 `headers`를 사용하여 설정한 기존의 `Authorization` 사용자 지정 헤더를 덮어씁니다.
// 이 파라미터를 통해 HTTP Basic 인증만 구성할 수 있음을 참고하세요.
// Bearer 토큰 등의 경우 `Authorization` 사용자 지정 헤더를 대신 사용합니다.
auth: {
username: 'janedoe',
password: 's00pers3cret'
},
// `responseType`은 서버에서 받는 데이터의 타입입니다.
// 옵션: 'arraybuffer', 'document', 'json', 'text', 'stream'
// 브라우저 전용: 'blob'
responseType: 'json', // 기본값
// `responseEncoding`은 응답 디코딩에 사용할 인코딩입니다.
// Node.js 전용
// 참고: 클라이언트 사이드 요청 또는 `responseType`이 'stream'이면 무시합니다.
responseEncoding: 'utf8', // 기본값
// `xsrfCookieName`은 xsrf 토큰 값으로 사용할 쿠키의 이름입니다.
xsrfCookieName: 'XSRF-TOKEN', // 기본값
// `xsrfHeaderName`은 xsrf 토큰 값을 운반하는 HTTP 헤더의 이름입니다.
xsrfHeaderName: 'X-XSRF-TOKEN', // 기본값
// `onUploadProgress`는 업로드 진행 이벤트를 처리합니다.
// 브라우저 전용
onUploadProgress: function (progressEvent) {
// 업로드 진행 이벤트 작업 수행
},
// `onDownloadProgress`는 다운로드로드 진행 이벤트를 처리합니다.
// 브라우저 전용
onDownloadProgress: function (progressEvent) {
// 다운로드 진행 이벤트 작업 수행
},
// `maxContentLength`는 node.js에서 허용되는 http 응답 콘텐츠의 최대 크기를 바이트 단위로 정의합니다.
maxContentLength: 2000,
// `maxBodyLength`는 허용되는 http 요청 콘텐츠의 최대 크기를 바이트 단위로 정의합니다.
// Node.js 전용
maxBodyLength: 2000,
// `validateStatus`는 지정된 HTTP 응답 상태 코드에 대한 Promise를 이행할지 또는 거부할지 여부를 정의합니다.
// 만약 `validateStatus`가 true를 반환하면(또는 'null' 또는 'undefined'으로 설정) Promise는 이행됩니다.
// 그렇지 않으면, 그 Promise는 거부될 것이다.
validateStatus: function (status) {
return status >= 200 && status < 300; // 기본값
},
// `maxRedirects`는 node.js에서 리디렉션 최대값을 정의합니다.
// 0으로 설정하면 리디렉션되지 않습니다.
maxRedirects: 5, // 기본값
// `socketPath`는 node.js에서 사용될 UNIX 소켓을 정의합니다.
// 예: '/var/run/docker.sock' 도커 데몬에 요청을 보냅니다.
// 오직 `socketPath` 또는 `proxy`만 지정할 수 있습니다.
// 둘 다 지정되면 `socketPath`가 사용됩니다.
socketPath: null, // 기본값
// `httpAgent`와 `httpsAgent`는 각각 node.js에서 http 및 https 요청을 수행할 때 사용할 사용자 지정 에이전트를 정의합니다.
// 이렇게 하면 기본적으로 활성화되지 않은 `keepAlive`와 같은 옵션을 추가할 수 있습니다.
httpAgent: new http.Agent({ keepAlive: true }),
httpsAgent: new https.Agent({ keepAlive: true }),
// `proxy`는 프록시 서버의 호스트이름, 포트, 프로토콜을 정의합니다.
// 기존의 `http_proxy`와 `https_proxy` 환경 변수를 사용하여
// 프록시를 정의할 수도 있습니다.
// 프록시 구성에 환경 변수를 사용하는 경우, 'no_proxy' 환경 변수를
// 쉼표로 구분된 프록시가 되지 않는 도메인 목록으로 정의할 수도 있습니다.
// `false`를 사용하면 프록시를 사용하지 않고, 환경 변수를 무시합니다.
// `auth`는 프록시에 연결하는데 HTTP Basic auth를 사용해야 함을 나타내며,
// 자격 증명을 제공합니다. 그러면 `Proxy-Authorization` 헤더가 설정되고,
// `headers`를 사용하여 기존의 `Proxy-Authorization` 사용자 지정 해더를 덮어씁니다.
// 만약 프록시 서버가 HTTPS를 사용한다면, 프로토콜을 반드시 `https`로 설정해야 합니다.
proxy: {
protocol: 'https',
host: '127.0.0.1',
port: 9000,
auth: {
username: 'mikeymike',
password: 'rapunz3l'
}
},
// `cancelToken`은 요청을 취소하는 데 사용할 수 있는 취소 토큰을 지정합니다.
// (자세한 내용은 요청 취소 섹션 참조)
cancelToken: new CancelToken(function (cancel) {
}),
// `decompress`는 응답 바디의 자동 압축 해제 여부를 나타냅니다.
// `true`로 설정하면, 압축 해제된 모든 응답에서 'content-encoding' 헤더도 제거됩니다.
// Node.js 전용 (XHR은 압축 해제할 수 없습니다)
decompress: true // 기본값
'로그인 기능 및 인증 > 3. Ajax' 카테고리의 다른 글
Ajax4-5. Axios - 응답 스키마 (0) | 2022.03.07 |
---|---|
Ajax4-4. Axios - config 기본값 설정 (0) | 2022.03.07 |
Ajax2-2. 코드_로그인페이지 (0) | 2022.03.07 |
Ajax2-1. 기본_로그인 페이지 (0) | 2022.03.07 |
AJax1. 기본 개념 (0) | 2022.03.04 |
댓글