API(Application Programming Interface)
- 애플리케이션 소프트웨어를 빌드/통합하기 위한 정의 및 프로토콜 세트인 애플리케이션 프로그래밍 인터페이스
- 각 기업에서 API 통해 자사 애플리케이션의 데이터/기능을 외부 써드파티 개발자, 비즈니스 파트너, 사내 부서에 공개O
- 문서화된 단일 인터페이스 통해 여러 서비스/제품들끼리 서로 통신하고 상호 데이터 기능 활용O
- 개발자는 API가 어떻게 구현되었는지 알 필요 없음
- 다른 제품/서비스와 통신하는 데 API 사용하면 됨
- 컴퓨터, 애플리케이션의 상호 통신 방식을 설명하게끔 정의된 규칙의 모음
- 애플리케이션, 웹 서버 사이의 중간 계층 역할을 하며 시스템 간의 데이터 전송 처리
- 기능상 보안 제공
- 두 시스템 사이에서 중개자 역할하며 기능 추상화
- API 엔드포인트가 서비스 소비자인 애플리케이션, 그 서비스 제공하는 인프라를 분리함
- 일반적으로 API 호출 시 인증 자격 증명이 포함돼 서버 대한 공격 위험 줄임
- API 게이트웨이는 액세스 제한해 보험 위험 최소화
- 교환 과정에서 HTTP 헤더, 쿠키, 쿼리 문자열 매개변수 의해 데이터 보안 이루어짐
API의 작동 방식
1. 클라이언트 애플리케이션에서 정보 가져오기 위해 API 호출 시작 - 요청(request)
- 애플리케이션 -> 웹 서버로 '요청(request)' 전달됨
- API의 URI(Uniform Resource Identifer) 사용해 처리됨
2. API는 유효한 요청 받으면, 외부 프로그램/웹 서버에 호출
3. 서버가 API에 응답하면서 요청받은 정보를 보냄
4. API가 원래 요청했던 애플리케이션에 데이터 전송
▶ API 동작 예시 : 결체 처리 서비스 API
- 고객이 온라인 쇼핑몰 애플리케이션의 프론트 엔드에서 카드 정보 입력
- 결제 처리 기관은 사용자의 은행 계좌에 액세스X
- API가 거래 위한 고유 토큰 생성
- 서버 호출 시 토큰 포함
=> 더 높은 보안, 해킹 위협 방지
API가 필요한 이유
대표적인 API 예시
- 범용 로그인 : Facebook, Twitter 등 프로파일 로그인 정보 사용해 웹 사이트에 로그인 하는 기능
- 써드파트 결체 처리 : 온라인 쇼핑몰의 "Pay with PayPal" 기능
- 여행 예약 비교 : 애플리케이션 사용자가 이용 가능 호텔/항공사 대한 최신 정보에 액세스하게 해주는 API
- Google Maps
- Twitter
REST API(REpresentational State Transfer API)
- API : 애플리케이션, 디바이스가 서로 연결해 통신할 수 있는 방법을 정의하는 규칙 세트
- REST API : REST(REpresentational State Transfer) 아키텍처 스타일 디자인 원칙을 준수하는 API
- 두 컴퓨터 시스템이 인터넷 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스
- 대부분 비즈니스 애플리케이션은 다양한 태스크 수행 위해 다른 내부 애플리케이션, 서드 파티 애플리케이션과 소통해야 하고 REST API 통해 안전/신뢰할 수 있는 교환O
REST API 작동 방식
- REST API 기본 기능은 인터넷 브라우징과 동일
- HTTP Request 통해 통신
- Resource 내 레코드 CRUD(Create, Read, Update, Delete) 등 표준 데이터베이스 기능 수행
- 예시 : REST API는 GET 요청 사용해 레코드 검색, POST 요청 사용해 레코드 작성, PUT 요청 사용해 레코드 업데이트, DELETE 요청 사용해 레코드 삭제
- 모든 HTTP Method는 API 호출에서 사용O
- 리소스 표현 : 특정 순간, 타임스탬프 리소스 상태
- JSON(Javascript Object Notation), HTML, XLT, Python, PHP, 일반 텍스트 포함해 실제로 거의 모든 형식으로 클라이언트에게 전달O
- JSON은 사람/기계 모두 읽을 수 있고 프로그래밍 언어에 구애받지 않아 자주 사용됨
출처
https://www.ibm.com/kr-ko/topics/api
https://www.ibm.com/kr-ko/topics/rest-apis
https://aws.amazon.com/ko/what-is/restful-api/