[천재교육] 프로젝트 기반 빅데이터 서비스 개발자 양성 과정 9기 학습일 : 2024.08.06
📕학습 목록
API
DB
MariaDB (RDBMS)
SQL (DDL; 데이터 정의 언어)
📗 기억할 내용
1) API(Application Programming Interface)
응용 프로그램 프로그래밍 인터페이스; 응용 프로그램에서 사용할 수 있도록, 운영체제•프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스
파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스 제공
① API 호출
데이터 요청 & 응답 과정
데이터 요청 / 응답 과정
API : 프로그램 – 프로그램 의 연결다리&대화할 수 있는 방법 (≓ 웹브라우저 – 서버 관계)
API 호출 : 데이터를 요청하고 전달받는 것(Request & Response)
"API를 호출한다" = "다른 프로그램으로 부터 데이터를 받는다"
API 요청 : request & response
API 호출 : 인터넷 속도•서버 부하 등에 따라, server에서 데이터를 응답해주는 시간이 달라짐 or 실패함
∴ 언제 끝날지 모르는 API 호출을 비동기적으로 처리해야함(동기적X); Promise 객체 이용
② Promise : Javascript 내장 객체
Javascript 에서 API를 호출할 때 사용
비동기 작업의 완료 or 실패를 처리하는 방법 제공
[ 핵심 포인트] resolve 함수 Promise의 성공을 알리고, 결과 값을 전달하는 역할 then 메서드 resolve가 전달한 값을 받아서, 그 값을 인자로 처리 then의 매개변수(result) resolve가 전달한 값
// [Promise 객체 문법]// 1. Promise 생성자(함수 resoleve, reject를 인자로 받음)를 통해 객체 myPromise 생성const myPromise = newPromise((resolve, reject) => {
// 비동기 작업 수행 (1초 후에 완료)setTimeout(() => {
const success = true;
// 비동기 작업 성공/실패에 따라 함수 resolve or reject 를 호출 if (success) { // 비동기 작업이 성공할 경우
resolve('성공했습니다!'); // Promise를 성공상태로 변경 & '성공했습니다!'를 Promise의 결과로 전달
} else { // 비동기 작업이 실패할 경우
reject('실패했습니다.'); // Promise를 실패상태로 변경 & '실패했습니다!' 가 오류값으로 전달됨
}, 1000);
});
// 2. then 메서드// Promise가 성공적으로 완료되었을 때(resolve가 호출되었을 때), then 메서드가 실행됨
myPromise
.then(result => { // then 메서드의 첫 번째 인자로, resolve에 의해 전달된 값(result = '성공했습니다!')을 받음console.log(result); // "성공했습니다!" 출력
})
.catch(error => { // reject에 의해 전달된 값(error = '실패했습니다.')을 인자로 받음console.error(error); // "실패했습니다." 출력
});
③ fetch : Javascript 내장 API
Javascript 에서 네트워크 요청을 수행할 때 사용 (요청 개시)
fetch는 Promise를 기반으로 하여 비동기적으로 동작함; HTTP 요청의 결과를 처리하는 데 편리•직관적인 방법
[핵심 포인트] ** 이 API(⊂HTTP) 요청 과정은 모두 비동기적으로 발생 fetch 함수 URL에 대해 HTTP 요청을 보냄 → Promise 객체를 반환 Promise 객체 HTTP 요청 성공/실패 여부에 따라 then/catch 메서드를 통해 결과 처리 then 메서드 응답이 성공적으로 도착했을 때, 응답 데이터를 처리 catch 메서드 요청이 실패했을 때, 오류를 처리
// GET 요청 예시: 사용자의 정보 가져오기// fetch 함수는 내부적으로 Promise 객체를 반환하므로, 코드에 Promise가 직접 나타나지 않아도 then, catch 메서드를 통해 비동기 요청의 결과를 처리할 수 있음
fetch('https://jsonplaceholder.typicode.com/users/1') // API URL
.then(response => {
if (!response.ok) {
thrownewError('Network response was not ok');
}
return response.json(); // 응답 본문을 JSON으로 파싱
})
.then(data => {
console.log('GET 요청으로 가져온 사용자 데이터:', data); // 가져온 데이터 출력
})
.catch(error => {
console.error('GET 요청 오류:', error); // 오류 처리
});
// POST 요청 예시: 새로운 사용자 추가하기
fetch('https://jsonplaceholder.typicode.com/users', { // API URLmethod: 'POST', // HTTP 메서드 POSTheaders: {
'Content-Type': 'application/json'// JSON 형식의 요청 본문
},
body: JSON.stringify({ // 요청 본문 데이터name: 'John Doe',
email: 'john.doe@example.com'
})
})
.then(response => {
if (!response.ok) {
thrownewError('Network response was not ok');
}
return response.json(); // 응답 본문을 JSON으로 파싱
})
.then(data => {
console.log('POST 요청으로 추가된 사용자 데이터:', data); // 추가된 데이터 출력
})
.catch(error => {
console.error('POST 요청 오류:', error); // 오류 처리
});
용어
설명
API
- s/w 간의 상호작용을 매개하는 인터페이스 - 웹 API : HTTP 요청을 통해 클라이언트 - 서버간 상호작용을 매개
HTTP
- 클라이언트-서버 간의 데이터 전송을 위한 프로토콜
GET
- HTTP 메서드 중 하나 - 서버에 데이터를 요청 - 요청된 데이터는 서버에서 클라이언트로 반환됨