Frontend/궁금증 💭

API | REST API, GraphQL, Open API

jejukyj 2025. 1. 30. 17:44

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/

https://www.youtube.com/watch?v=lYuWfoWD67Q

https://tech.kakao.com/posts/364