
Today I Learn📖
- fetch API 사용해보기 (강의)
- 정적 HTML과 동적 JAVASCRIPT (추가 학습)
API 도메인을 뽑아내서 상수로 관리 or 외부의 환경 변수로 사용할 수 있음
//api.js
/* 아래처럼 API 도메인을 뽑아내면 됨. 이건 END_POINT로 관리하는 경우임 */
const API_END_POINT = "https://kdt.roto.codes"
export const request = (url) => {
return fetch('${API_END_POINT}/${url}')
.then(res => {
if (res.ok) { // 잘 받았으면 json으로 변환
return res.json()
}
throw new Error(`${res.status} Error`) // 아니면 에러
})
.catch(e => alert(e.message))
}
2가지 API속 data를 한번에 사용하는 방법
/* 1번 */
const fetchOptionData = (productId) => {
return request(`/products/${productId}`) // product 정보 불러오기
.then((product) => {
return request(`/product-options?product.id=${product.id}`); // 각 id별로 옵션 불러오기
})
.then((productOptions) => {
return Promise.all([ // productOptions와 product-option-stocks를 둘 다 감싼 Promise.all
Promise.resolve(productOptions), // productOptions 정보 -> reslove 썼으니까 얘 자체도 Promise값 됨
Promise.all( // productOptions의 id에 해당하는 각 옵션과 그 옵션에 따른 재고들
productOptions.map((productOption) => productOption.id).map((id) => {
return request(`/product-option-stocks?productOption.id=${id}`);
})
)
]);
})
.then((data) => {
console.log(data); // Promise.all을 2번 이용해 배열에 두 데이터 담은 값 출력 (Promise.all 반환 형태가 원래 배열임)
});
/* 2번 */
.then((data) => { // 위의 console.log 대신 형태 가공
const [productOptions, stocks] = data;
const optionData = productOptions.map((productOption, i) => {
const stock = stocks[i][0].stock;
return {
optionId: productOption.id,
optionName: productOption.optionName,
optionPrice: productOption.optionprice,
stock
};
});
console.log(optionData);
});
};
순회 메서드 사용시 에러 방지
HTML은 웹 페이지의 구조와 내용을 정의함
=> HTML 자체는 변화가 없는 상태 (정적)
웹 페이지의 DOM 요소를 조작해 동작을 추가하기 때문에, 자바스크립트를 통해 정적 웹페이지를 동적 어플리케이션으로 바꿈
특징 HTML 자바스크립트 역할 웹 페이지의 정적 구조 정의 어플리케이션의 동작 & 상호작용 변화 여부 정적, 변화 X (상호작용 X) 동적, 변화 O (상호작용 O) 언어 타입 마크업 언어 (구조, 내용) 프로그래밍 언어 (로직, 동작)
API를 처리하는 코드, 여러 개의 API속 데이터를 필요한 형태로 조작하는 법, 코드의 구조를 정하는 법 등을 실습을 통해 배웠다.
여러 API를 내가 원하는 형태로 조작하는 방법과 화면은 받아온 데이터에 따라 그려지게 만드는 것의 중요성을 느꼈다 !