API(Application Programming Interface)
- 애플리케이션 : 고유한 기능을 가진 모든 소프트웨어
- 인터페이스 : 두 애플리케이션 간의 서비스 계약
- 요청과 응답을 사용하여 두 애플리케이션이 서로 통신하는 방법을 정의
- 고유한 기능을 가진 두 소프트웨어 간의 서비스 계약
- 소프트웨어 간에 데이터를 교환할 수 있도록 하는 규칙이나 프로토콜
- 웹 API : 클라이언트와 웹 리소스 사이의 게이트웨이
API는 어떻게 작동하나요?
- 클라이언트(요청을 보내는 애플리케이션) - 서버(응답을 보내는 애플리케이션) 구조
- ex) 모바일 앱(클라이언트) - 날씨 데이터베이스(서버)
- 4가지 작동방식
- SOAP API - 단순 객체 접근 프로토콜 사용, XML을 사용하여 메시지 교환
- RPC API - 원격 프로시저 호출
- Websocket API - JSON 객체 사용하여 데이터 전달, 양방향 통신 지원
- REST API - 가장 많이 사용되고 유연한 API
REST API란?
- REST(Representational State Transfer)
- API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처
- 클라이언트가 서버 데이터에 엑세스하는 데 사용할 수 있는 GET, PUT DELETE 등의 함수 집합을 정의
- REST API
- REST 아키텍처 스타일을 따르는 API
- RESTful 웹 서비스
- REST 아키텍처를 구현하는 웹 서비스
- RESTful API
- RESTful 웹 API
- REST API와 RESTful API는 같은 의미로 사용 가능
- REST API 예시
REST API의 특징
- HTTP를 사용하여 데이터 교환
- 주요 특징 : 무상태
- 서버가 요청 간에 클라이언트 데이터를 저장하지 않음을 의미
REST API의 장단점
- 장점 : 요청의 내용을 직관적으로 알 수 있음(HTTP 메서드, URI)
- 단점 : 많은 엔드포인트를 관리해야 함, Overfetching+Underfetching 문제 발생
- ⇒ GraphQL이 해결(하나의 엔드포인트, 필요한 정보만 요청)

GraphQL이란?
- Graph Query Language : 질의를 하기 위한 언어
- (페이스북에서 만든)API용으로 특별히 개발된 쿼리 언어
- 클라이언트가 필요로 하는 정보만을 선택해서 서버에 요청할 수 있음(웹 클라이언트가 데이터를 서버로 부터 효율적으로 가져오는 것이 목적)
- 프론트엔드 개발자에게 단일 GraphQL 엔드포인트로 여러 데이터베이스, 마이크로서비스 및 API를 쿼리할 수 있는 기능을 제공
- ex)
{
hero {
name
friends {
name
}
}
}
GraphQL를 사용하는 이유
- 데이터 관리를 간소화하여 최신 웹 및 모바일 애플리케이션을 더 빠르게 구축
- 단일 네트워크 요청에서 여러 소스에 걸쳐 여러 정보를 쿼리하고 검색할 수 있으며, 느린 연결에서도 더 빠른 응답 시간을 보장
- 서버에서 데이터를 반환할 때 데이터를 구조화하는 방법을 지정 ⇒ 필요한 형식의 데이터만 쿼리
GraphQL을 사용하는 경우
- 실시간 애플리케이션
- 복잡하고 방대한 데이터 기반 애플리케이션
- 모바일 백엔드
GraphQL의 단점
- 캐싱이 용이하지 않음
- 복잡한 GraphQL 메시지로 되어 있기 때문에 이를 기준으로 캐싱을 하기가 용이하지 않음
- 성능 문제(서버에 부담)
- 복잡한 쿼리를 해석해서 작업들을 실행하기 때문에 REST API에 비해 서버에 부담을 줄 수 있음
- 러닝 커브가 높음
Open API란?
- 누구나 쓸 수 있도록 공개된 API
- ex) 공공데이터 포털, 지도 API, 로그인 API, 주소 API 등정부는 공공데이터 포털을 통해 국가기관이 보유한 수많은 데이터를 API형태로 무료 공개
참고
https://aws.amazon.com/ko/what-is/api/
https://aws.amazon.com/ko/graphql/?nc1=h_ls
https://aws.amazon.com/ko/what-is/restful-api/
'Frontend > 궁금증 💭' 카테고리의 다른 글
| CORS(교차 출처 리소스 공유) (0) | 2025.10.21 |
|---|