| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
| 31 |
- express.js 환경 셋팅
- CSS
- 이석증
- 30일 글쓰기
- 웹기초
- Git 팀 작업
- 카뷰 수익 인증
- 도서 원씽
- 카카오뷰N잡
- 위드굿즈
- 카카오뷰 초보
- 위드굿즈 굿즈샵
- HTML
- 카카오뷰 탭이동
- 엑셀 기초 함수
- 카카오뷰 부업
- 카카오뷰 온라인 수익화
- 카카오뷰 수익
- Axios 라이브러리
- 책 원씽
- ppt 다이어그램
- 엑셀 프린트하기
- 성공비법
- 원씽
- 카카오뷰 성장
- 실시간 통신
- git 협업하기
- 자기관리
- ppt 도형 색
- 성공에 대한 거짓말
- Today
- Total
김데이의 개발공부
[TIL] Day 11 - 자바스크립트 리퀘스트 작업(API Data 사용하기) 본문
[TIL] Day 11 - 자바스크립트 리퀘스트 작업(API Data 사용하기)
theday365 2025. 10. 2. 16:55🗓️ 수업 일자 : 2025.10.02
✨ 오늘의 수업 평가 : [ GOOD ] 🔥🫠🔥 열정열정열정🔥🫠🔥
📝 오늘 배운 내용
- 자바스크립트 Fetch + than / catch
- 자바스크립트 Fetch + async / await
- 자바스크립트 Axios (라이브러리)
시작하기 전에!
0. 자바스크립트 리퀘스트, 리스폰스, Fetch
- 리퀘스트 : 서버에 특정 명령어를 전달하는 작업, 데이터를 다루는 명령어를 전달하는데, 쓰고 / 읽고 / 수정하고 / 삭제하는 작업
- 리스폰스 : 서버에서 명령어를 받으면 클라이언트에 전달하는 결과값, 작업이 성공하면 성공 메세지와 함께 데이터 정보가 확인되고, 실패할 경우 에러 메시지와 함께 문제 내용에 대해 전달함.
- Fetch() : 자바스크립트 ES6에서 소개 된 문법, 해당 메서드를 사용하면 손쉽게 리퀘스트를 보낼 수 있음. Promise 기반이기 때문에 비동기로 작동. (리스폰스 결과는 Promise 객체로 전달됨, 따라서 데이터 변환 작업도 비동기로 진행 필요)
- Fetch()문 세부 구조
url : 리퀘스트를 보낼 서버 url 입력
method : 리퀘스트를 보낼 때 요청할 명령어 입력, POST / PUT / PATCH / DELETE 등이 있음
headers : 리퀘스트 보낼 때 보내는 데이터의 타입, 인증 정보 등 서버가 작업 시 참고 해야 할 정보가 담겨 있음,
body : 리퀘스트를 보낼 때 작업에 사용할 실제 데이터가 담겨 있음,
주로 fetch()문 바깥에 실제 데이터를 객체로 저장한 뒤, JSON.stringify(객체명)으로 변환하여 발송함
!참고사항! : 요청 명령어 중 Get은 { method , headers , body } 정보를 쓰지 않고 url만 적어서 요청함
[명령어 Get]
fetch('url');
[명령어 POST, PUT, PATCH, DELETE]
fetch('url',{
method : 'POST, PUT, PATCH, DELETE' 중 하나 작성,
headers : {
데이터 타입, 인증 정보등을 객체로 작성
},
body : JSON.stringify(데이터 객체명)
});

1. 자바스크립트 Fetch + than / catch
- 기본 구조 : fetch('API URL 주소').then((res)=>{...}).then((data)=>{...}).(추가작업).catch((...)=>{...})
- Fetch문을 사용하여 서버에 리퀘스트 작업을 진행
- 비동기로 작업하기 위하여 보통 .then((res)=>{...}).then((data)=>{...}) 으로 처리
(Promise 객체이기 때문에, 순차로 처리 된 데이터를 다뤄야 하므로 한 개의 then으로 사용 불가) - 에러 처리를 위해 .catch()문을 함께 사용
[ fetch(GET) 사용 방법 ]
fetch('API URL 주소')
.then((res)=>{
// 전달 받은 데이터가 res에 저장됨
// 데이터를 사용 가능하도록 .json()으로 변환
return res.json();
}).then((data)=>{
// 변환한 데이터가 data라는 변수에 담기고,
// 최종 전달
return data;
}).catch((err)=>{
// 에러 처리를 위해 catch문 사용.
console.error(err)
});
[ fetch(POST) 사용 방법 ]
const originData = {
// 서버에서 등록 시 필요한 정보
// 아래는 예시
name : "kimday",
country : "korea",
images : "https://sample.jpg",
}
fetch('API URL 주소',{
method : "POST",
headers : {
// 서버가 참고 할 정보 작성, 예시로 데이터 타입 입력
'Content-Type': 'application/json',
},
body : JSON.stringify(originData),
}).then((res)=>{
// 전달 받은 데이터가 res에 저장됨
// 데이터를 사용 가능하도록 .json()으로 변환
return res.json();
}).then((data)=>{
// 변환한 데이터가 data라는 변수에 담기고,
// 최종 전달
return data;
}).catch((err)=>{
// 에러 처리를 위해 catch문 사용.
console.error(err)
});
2. 자바스크립트 Fetch + async / await
- async / await 문
- 비동기로 작업하겠다는 선언으로 코드블럭 시작에 "async"를 사용
- 비동기 함수 내부에서 비동기가 필요한 구문에 await을 사용하여 특정 구문만 비동기로 작업 할 수 있음.
- 여러 개에 await이 사용되면 await 순서대로 처리 됨
- await은 async 선언 된 코드블럭 안에서만 사용 가능!
- try / catch 문 : 원활한 동작과 에러 확인을 위해 해당 구문을 함께 사용
[ fetch(GET) 사용 방법 ]
async function basicAPI(){
// 비동기 선언인 async를 맨 앞에 사용
// 동작과 에러를 관리하기 위하여 try{}catch{}문 사용
try{
const res = await fetch('API URL 주소'); // await을 사용하여 서버에서 데이터 받아옴
const data = await res.json();
// 앞서 Promise 객체로 받아오기 때문에 비동기 순서에 맞추기 위하여
// 데이터 변환도 await을 사용하여 진행함
return data;
}catch(err){
// 에러 처리를 위해 catch문 사용.
console.error(err)
}
}
basicAPI();
[ fetch(POST) 사용 방법 ]
async function createAPI(items){
// 비동기 선언인 async를 맨 앞에 사용
// 동작과 에러를 관리하기 위하여 try{}catch{}문 사용
try{
const res = await fetch('API URL 주소',{
method : "POST",
headers : {
// 서버가 참고 할 정보 작성, 예시로 데이터 타입 입력
'Content-Type': 'application/json',
},
body : JSON.stringify(items),
};) // await을 사용하여 서버에서 데이터 받아옴
const data = await res.json();
// 앞서 Promise 객체로 받아오기 때문에 비동기 순서에 맞추기 위하여
// 데이터 변환도 await을 사용하여 진행함
return data;
}catch(err){
// 에러 처리를 위해 catch문 사용.
console.error(err)
}
}
const toy = {
// 서버에서 등록 시 필요한 정보
// 아래는 예시
name : "alin",
country : "america",
price : 50000,
}
createAPI(toy);
3. 자바스크립트 Axios (라이브러리)
- Axios : 리퀘스트 작업을 훨씬 더 간결하고, 쉽게 작업하기 위해서 만들어진 라이브러리
- 사용법
- Axios 라이브러리를 설치 후 불러옴
- instance 객체를 만들어, 공용으로 사용할 정보(url, timeout)를 넣어둠
- 클래스 또는 함수를 만들 때 async / await 을 사용하여 제작
- 리퀘스트 작업 시 "instance.명령어" 조합으로 명령어 사용
- 장점
- headers, body를 따로 작성하지 않아도 됨
- 받은 데이터는 자동으로 .json 변형 해줌
- 쿼리 파라미터 사용 시, 객체만 작성하면 되서 사용이 쉬움 (자동 직렬화 지원)
- 에러가 났을 경우, fetch보다 직관적으로 표기 해 줌 (error.response / error.messege 등)
// 1. 라이브러리 불러오기
import axios from 'axios';
// 2. instance 만들기
const instance = axios.create({
baseURL: 'API URL 입력',
timeout : 3000,
});
// 3. async와 await을 사용하여 함수/클래스 만들기
async getAxiosData(queryParams){
try{
// 4. 위에서 정의한 instance와 객체로 받은 queryParams 데이터를 사용하여
// 서버에 query string 전달
const res = await instance.get('url 추가 부분', {
params : {
page: queryParams.page,
keyword : queryParams.keyword,
}
});
return res.data;
}catch(err){
console.error(err);
}
}
📃 내일은 뭘 배울까 🤔
- 추석이에요 :) 한주 쉬어요!
'코드잇 Node.js(BE) 부트 캠프 > TIL (Today I Learn) 📑' 카테고리의 다른 글
| [TIL] Day 13 - GitHub 기초, 원격저장소(Remote Repository), 협업 PR, alias(단축어) 사용법 (0) | 2025.10.14 |
|---|---|
| [TIL] Day 12 - 커맨드(명령어) 사용하기, GitHub 기초 (0) | 2025.10.13 |
| [ TIL ] Day 10 - 자바스크립트 기초 3 : spread, rest, 구조분해할당, 옵셔널체이닝, try-catch-finally (0) | 2025.10.01 |
| [TIL] Day 9 - Javascript 기초 2 : 함수, 내장함수, 다양한 문법 (0) | 2025.09.30 |
| [TIL] DAY 8 - Javascript 기초 1 (강의 복습) (0) | 2025.09.29 |