일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 개발자 취업 준비
- VUE
- github accesstoken
- 개발자 회고록
- mongo 4.4.18
- mongo 4.4
- 쿠버네티스
- 팩토리 패턴 예제
- index like
- OSI 7계층
- 신입 개발자 면접
- aws m2
- index in
- 회고록
- 신입 면접 팁
- 라즈베리바이4 mongo
- token 탈취
- 인텔리제이 github 로그인
- nestjs
- 밸런스 게임
- ECS
- mysql like
- 팩토리 패턴 언제
- 퇴사
- docker m2
- 개발자 면접 팁
- 개발자 전직
- git
- kubernetes
- mysql index 속도차이
- Today
- Total
주니어 개발자 1호
Vue axios 세팅 본문
axios 다운
⬇️ NPM 다운
- npm 다운 (프론트 엔드)
npm i --save vue-axios
npm i --save axios
- package.json 확인
axiosInstance 생성
⬇️ axios.ts 작성
순서.
- axios.ts 생성
- axios.ts 작성
- Interceptor ( custom )
- 예시 코드 전체
axios.ts 생성
[ 위치 ] → project / src / util / axios.ts ( 사진 첨부 )
axios.ts 작성
1. instance
→ 백엔드로 보내기전 기본적으로 세팅할 항목에 대해 설정한다.
baseUrl ( 백엔드의 기본 경로 ) , headers , 요청제한 시간에 대한 설정등을 할 수 있다.
예시 )
- baseUrl → http://localhost:3000/api /~ 로 보내게 된다.
- headers → Content-Type은 application/json 을 사용하겠다.
- timeout→ 요청 제한 시간은 20초로 하겠다.
import axios, {AxiosInstance} from 'axios';
import Vuex from '../store';
import Vue from 'vue';
const baseURL: string = '/api';
//1. instance
const instance: AxiosInstance = axios.create({
baseURL,
headers: {
'Content-Type': 'application/json'
},
timeout: 20000
})
export const ins = instance
Interceptor ( custom )
2. 인터셉터
→ 아래 항목에 대해 동작을 지정할 수 있다.
요청보낼때, 받을때
2_1. request interceptor
→ 예시 ) request 요청을 보낼때 마다 , token이 있는지 확인 후 있다면 headers의 Authorization 항목에 Bearer ${token} 로 설정하여 보내겠다.
없을시 아무 행동하지 않음.
//2_1. **r**equest interceptor
instance.interceptors.request.use(config => {
const token = Vuex.getters.getAccessToken;
if (token) config.headers['Authorization'] = `Bearer ${token}`;
return config;
})
2_1. response interceptor
→ 예시 ) response 요청을 받을때 마다 행동하지 않으나,
error 확인 시 console.error로 에러에 대한 메세지를 출력해주고 있다.
주석처리된 것 처럼 , toast를 통해 알림창등으로 쉽게 확인이 가능하다.
//2_1. **response** interceptor
instance.interceptors.response.use(response => {
const {data} = response
const {result, error} = data
return response
}, error => { //--->> error 확인 시
const {response} = error
const {status, data} = response
console.error(data.message)
// Vue.$toast.open({
// message: data.message,
// type: 'error',
// duration: 5000
// });
return response
});
예시 전체
import axios, {AxiosInstance} from 'axios';
import Vuex from '../store';
import Vue from 'vue';
const baseURL: string = '/api';
const instance: AxiosInstance = axios.create({
baseURL,
headers: {
'Content-Type': 'application/json'
},
timeout: 20000
})
instance.interceptors.request.use(config => {
const token = Vuex.getters.getAccessToken;
if (token) config.headers['Authorization'] = `Bearer ${token}`;
return config;
})
instance.interceptors.response.use(response => {
const {data} = response
const {result, error} = data
return response
}, error => {
const {response} = error
const {status, data} = response
console.error(data.message)
// Vue.$toast.open({
// message: data.message,
// type: 'error',
// duration: 5000
// });
return response
});
export const ins = instance
main.ts에 추가
→ 작성한 axios 인스턴스를 , VueAxios에 끼워준다.
[ main.js ] or ts 영역
import VueAxios from 'vue-axios';
import {ins as axios} from './util/axios';
Vue.use(VueAxios, axios)
사용법
vue 영역에서
//this.axios or Vue.axios로 접근가능.
//HTTP 메소드 확인 후 사용
// this. 로 접근 가능한것은 Vue를 extends 받았을때만 사용 가능
const { data } = await Vue.axios.get('URL',option)
const { data } = await this.axios.post('URL',option)
const { data } = await this.axios.patch('URL',option)
axios 다운
<aside> ⬇️ NPM 다운
- npm 다운 (프론트 엔드)
npm i --save vue-axios
npm i --save axios
- package.json 확인
</aside>
axiosInstance 생성
<aside> ⬇️ axios**.ts** 작성
순서.
- axios.ts 생성
- axios.ts 작성
- Interceptor ( custom )
- 예시 코드 전체
axios**.ts 생성**
[ 위치 ] → project / src / util / axios.ts ( 사진 첨부 )
axios.ts 작성
1. instance
→ 백엔드로 보내기전 기본적으로 세팅할 항목에 대해 설정한다.
baseUrl ( 백엔드의 기본 경로 ) , headers , 요청제한 시간에 대한 설정등을 할 수 있다.
예시 )
- baseUrl → http://localhost:3000/api /~ 로 보내게 된다.
- headers → Content-Type은 application/json 을 사용하겠다.
- timeout→ 요청 제한 시간은 20초로 하겠다.
import axios, {AxiosInstance} from 'axios';
import Vuex from '../store';
import Vue from 'vue';
const baseURL: string = '/api';
//1. instance
const instance: AxiosInstance = axios.create({
baseURL,
headers: {
'Content-Type': 'application/json'
},
timeout: 20000
})
export const ins = instance
Interceptor ( custom )
2. 인터셉터
→ 아래 항목에 대해 동작을 지정할 수 있다.
요청보낼때, 받을때
2_1. request interceptor
→ 예시 ) request 요청을 보낼때 마다 , token이 있는지 확인 후 있다면 headers의 Authorization 항목에 Bearer ${token} 로 설정하여 보내겠다.
없을시 아무 행동하지 않음.
//2_1. request interceptor
instance.interceptors.request.use(config => {
const token = Vuex.getters.getAccessToken;
if (token) config.headers['Authorization'] = `Bearer ${token}`;
return config;
})
2_1. response interceptor
→ 예시 ) response 요청을 받을때 마다 행동하지 않으나,
error 확인 시 console.error로 에러에 대한 메세지를 출력해주고 있다.
주석처리된 것 처럼 , toast를 통해 알림창등으로 쉽게 확인이 가능하다.
//2_1. **response** interceptor
instance.interceptors.response.use(response => {
const {data} = response
const {result, error} = data
return response
}, error => { //--->> error 확인 시
const {response} = error
const {status, data} = response
console.error(data.message)
// Vue.$toast.open({
// message: data.message,
// type: 'error',
// duration: 5000
// });
return response
});
예시 전체
import axios, {AxiosInstance} from 'axios';
import Vuex from '../store';
import Vue from 'vue';
const baseURL: string = '/api';
const instance: AxiosInstance = axios.create({
baseURL,
headers: {
'Content-Type': 'application/json'
},
timeout: 20000
})
instance.interceptors.request.use(config => {
const token = Vuex.getters.getAccessToken;
if (token) config.headers['Authorization'] = `Bearer ${token}`;
return config;
})
instance.interceptors.response.use(response => {
const {data} = response
const {result, error} = data
return response
}, error => {
const {response} = error
const {status, data} = response
console.error(data.message)
// Vue.$toast.open({
// message: data.message,
// type: 'error',
// duration: 5000
// });
return response
});
export const ins = instance
</aside>
main.ts에 추가
→ 작성한 axios 인스턴스를 , VueAxios에 끼워준다.
[ main.js ] or ts 영역
import VueAxios from 'vue-axios';
import {ins as axios} from './util/axios';
Vue.use(VueAxios, axios)
사용법
vue 영역에서
//this.axios or Vue.axios로 접근가능.
//HTTP 메소드 확인 후 사용
// this. 로 접근 가능한것은 Vue를 extends 받았을때만 사용 가능
const { data } = await Vue.axios.get('URL',option)
const { data } = await this.axios.post('URL',option)
const { data } = await this.axios.patch('URL',option)
'Front 관련' 카테고리의 다른 글
apollo client refetchQueries 분석.. (0) | 2024.08.27 |
---|---|
Vue emit 관련 (0) | 2022.07.20 |
Vue html2canvas 사용 방법 (0) | 2022.07.19 |