1. API 정의
- 소프트웨어/시스템이 다양한 방식으로 상호작용하기 위해 만든 인터페이스이며, 상호작용을 위해 지켜야 하는 규칙을 말함
- 정확하게는 클라이언트가 요청하고 서버가 응답하는 데 필요한 '요청 및 응답의 형식'에 대한 약속
2. API 누가 만드는지
- API는 공급자(제공자)가 규칙을 정하고, 클라이언트는 규칙을 따름
- API는 주고 받고자 하는 데이터(리소스)가 있음
- 어떤 데이터를 주는지에 대하여는 API 공급자가 정함
- 클라이언트는 무엇을 원하는지 요청함
- 리소스 제공자가 규칙을 정하기 때문에 보통 서버 개발자가 정의함
- 그러나, API를 사용하고자 하는 쪽의 편의성도 중요하기 때문에 클라이언트의 사용성, 의견 등이 반영되어 정의되어야 함
- API는 기본적으로 컴퓨터 사이의 의사소통을 수월하게 하기 위해 만들어진 것이지만, API 제공자와 사용자 사이의 의사소통이기도 함
- 만드는 쪽이나 사용하는 쪽 모두 기술과 사람에 대한 이해가 선행되어야 좋은 API를 만들 수 있고, API를 잘 사용할 수 있음
3. API 활용
3.1 API 활용 사례
- 모바일 앱에서 고객이 쇼핑하기 위해 상품 리스트를 받아야 와야 한다. 이때, 상품리스트를 조건에 따라 10개씩 가져오는 API가 필요하다.
- 사내에서 주기적으로 협업을 하는 데 매번 엑셀파일로 데이터를 주고 받으니까 일이 지연되고 파일관리의 어려움이 생긴다. 그때 그때 데이터를 볼 수 있으면 좋은데, 이걸 API로 만들어주면 내가 필요할 때마다 조회해서 쓸게요
- 고객사가 우리 광고 시스템에 등록할 광고 이미지를 매번 이미지로 전달했다. 고객사가 1,000개가 넘어가니까 메일함 관리도 어렵고 실수도 잦다. 이때 API를 사용해서 광고 등록 요청을 해주세요.
3.2 대표적인 API 종류 (REST, Soap, GraphQL)
REST(Representational State Transfer)
- 자원을 이름으로 구분하고, 자원의 상태를 주고 받는 방법의 API
- HTTP 프로토콜을 기반으로 웹의 자원을 다양하게 활용할 수 있음
- 기본규칙
- HTTP URL(Uniform Resource Identifier)로 대상이 되는 자원(Resource)을 명시함
- HTTP Method(POST, GET, PUT, DELETE, PATCH 등)로 동작을 명시함
- Header, Body로 구성됨
- Header에는 Key-Value로 정적인 정보를 전달하며, 주로 body를 처리하기 전에 필요한 약속, 보안 관련 정보 등
- Body에는 header에서 정의한 방식에 따라 자유롭게 데이터를 담을 수 있음
- 자유도가 높음
- 다양한 데이터 포맷을 사용할 수 있음
- 캐시 등 편의나 성능을 위한 기능을 사용할 수 있음
- 자유도가 높다보니, RESTful 한 것이 무엇이냐?에 대한 논의가 존재함
[참고] https://aws.amazon.com/ko/what-is/restful-api/
RESTful API란 무엇인가? - RESTful API 초보자 가이드 - AWS
Amazon API Gateway는 어떤 규모에서든 개발자가 API를 손쉽게 생성, 게시, 유지 관리, 모니터링 및 보안 유지할 수 있도록 하는 완전관리형 서비스입니다. API Gateway를 사용하면 실시간 양방향 통신 애
aws.amazon.com
SOAP(Simple Object Access Protocol)
- SOAP는 그 자체로 프로토콜임
- 메세지 전송 포맷, 기능, 보안 등 표준을 정함. 표준이 많음
- 프로토콜상 실행로직(성공, 실패, 반복)이 정의되어 있어 처음부터 끝까지 신뢰성을 제공함
- 자유도가 낮음
- 메세지가 큼
GraphQL
- 비즈니스 도메인을 그래프 자료구조로 모델링하고 한 번의 요청으로 원하는 정보를 선택적으로 요청하고 전달할 수 있는 API
- 한 개의 Endpoint로 모든 자료와 구조를 표현할 수 있음. 용도나 자원별로 API나 view 등을 만들 필요가 없음
- 한 번의 요청으로 원하는 모든 데이터를 서버로부터 요청하여 가져올 수 있음
- 기존의 REST API를 사용할 때 자주 발생하는 Overfetching(원하는 정보 이상을 가져옴)이나 Underfetching(원하는 데이터를 위해 여러 요청을 보냄) 문제가 발생하지 않음
- 기존 REST의 API나 리소스 단위로 캐시하던 방법의 적용이 어려움
- 필터링, 보안 등 다양한 제약사항을 서버에서 구현하기 어려움
3.3 OpenAPI
- 누구나 활용할 수 있도록 공개된 API를 말함. 외부 소프트웨어 개발자가 빠르게 시스템을 통합할 수 있도록 하기 위해 만듦
- API의 명세가 공개되어 있음
- 공개는 되어 있지만, 일부 사용의 제약이 있을 수 있음. (요청수, 기간당 요청수 등)
- 사용하는 사람이 많으므로, 설계와 신뢰성이 중요
- 사례 : 공공데이터포털, 네이버지도API, 유튜브API
데이터엔지니어 조이(Joey) 강사님의 강의 요약
'Computer Science > Network' 카테고리의 다른 글
[Network] HTTP 웹 기본 지식 - 2. URI와 웹 브라우저 요청 흐름 (0) | 2023.02.07 |
---|---|
[Network] HTTP 웹 기본 지식 - 1. 인터넷과 네트워크 (0) | 2023.02.06 |
[Web Service] 3. Web Service에서 발생하는 데이터의 종류 및 특징 (0) | 2023.01.09 |
[Network] OSI 7 Layer - 웹사이트에 접속할 때 일어나는 과정 (0) | 2023.01.09 |
[Web Service] 1. Servcer-Clinet Model (0) | 2023.01.09 |