1. Axios의 클래스와 인스턴스
- axios는 javascript의 클래스를 사용하여 구현되어있다.
- axios.get / post 등 모든 메서드는 axios.create()를 통해 생성된 "인스턴스"이다.
2. Axios create의 기본구조
// 기본문법
axios.create([config])
const myAxios = axios.create({
baseURL: 'https://some-domain.com/api/',
timeout: 1000,
headers: {'X-Custom-Header': 'foobar'}
});
// 이제 내가 미리 설정한 myAxios라는 커스텀 인스턴스에 내가 원하는 메서드를 붙여서 HTTP 통신 동작을 수행할 수 있다.
const myAxios.post (data)
3. Promise의 기반한 Axios
- axios는 Promise를 기반으로 한 HTTP 클라이언트 라이브러리이다.
- axios가 담당하는건, promise 함수를 통한 비동기처리 작업과 서버 통신을 위한 HTTP 메서드의 제공이다.
- 나머지는 Promise와 똑같다.
4. 코드 뜯어보기 (formData 이미지 업로드 함수)
// MemberProfileUpdateImageDto라는 interface에 정의된 타입대로 image 변수의 객체가 인자로 전달된다.
// if) image 변수 내부의 image 객체에 모종의 이유로 접근할 수 없거나, undefiend가 return되면 Error 객체를 리턴한다.
// formData 객체를 생선한 이후 "image"라는 키값에 "image.image"라는 데이터를 저장한다.
// 별도로 정의된 tokenRequestApi라는 axios 인스턴스에 patch 메서드를 사용하여 url / data / header를 적용하여 서버에 요청을 전달한다.
export const updateMemberProfileImage = async (
image: MemberProfileUpdateImageDto
) => {
if (!image.image) throw new Error("이미지를 확인해주세요.");
const formData = new FormData();
formData.append("image", image.image);
await tokenRequestApi.patch("/members/image", formData, {
headers: {
"Content-Type": "multipart/form-data",
},
});
};
'문제해결 > 프로젝트&협업' 카테고리의 다른 글
[리팩토링] 이미지 업로드 : json-data => form-data (0) | 2023.07.02 |
---|---|
[리팩토링] url 난독화 (utf-8 => base64 encode) (0) | 2023.07.01 |
프로젝트 리팩토링 관련 의견 공유 공간 (0) | 2023.06.26 |
[회고] 메인 프로젝트 / 기술 (0) | 2023.05.27 |
서버로부터 받은 데이터는 함부로 훼손하지 않는다. (0) | 2023.05.15 |