REST API
1. REST API(Representational State Transfer Application Programming Interface)란?
▶ REST API는 현대 웹 서비스의 핵심 구성 요소 중 하나로, 시스템 간의 상호 작용을 간편하고 일관되게 만들어주는 소프트웨어 스타일입니다. REST API는 웹 기반 애플리케이션 간에 데이터를 주고받는 데 사용되며, HTTP를 통해 통신합니다. 오늘은 이러한 REST API의 주요 개념과 원칙에 대해 한번 알아보도록 하겠습니다.
2. REST API의 주요 원칙
- 클라이언트-서버 구조
- 클라이언트와 서버는 서로 독립적으로 작동합니다. 이 과정에서 클라이언트는 사용자 인터페이스와 관련된 작업을 수행하고, 서버는 데이터 저장 및 비즈니스 로직 처리를 담당하는데, 이 구조는 시스템의 확장성을 높이고 각 부분을 독립적으로 개발 및 배포할 수 있게 합니다.
- 무상태성(stateless)
- REST API는 무상태성을 유지해야 합니다. 즉, 각 요청은 서로 독립적이며, 서버는 이전 요청의 상태를 저장하지 않습니다. 모든 필요한 정보는 요청에 포함되어야 하며, 이로 인해 서버의 확장성이 향상됩니다.
- 캐시 가능성
- HTTP의 캐시 메커니즘을 활용하여 응답을 캐시할 수 있습니다. 이를 통해 성능을 최적화하고 네트워크 사용량을 줄일 수 있습니다.
- 일관된 인터페이스
- REST API는 일관된 인터페이스를 제공해야 합니다. 이는 URI(Uniform Resource Identifier), HTTP 메서드(GET, POST, PUT, DELETE 등), 그리고 표준 응답 코드(200, 404, 500 등)를 일관되게 사용함으로써 이루어집니다.
- 계층형 시스템
- 클라이언트는 서버와 직접 통신하는 대신, 중간 서버(예: 프록시, 게이트웨이)를 통해 통신할 수 있습니다. 이를 통해 시스템의 보안, 로드 밸런싱 및 기타 기능을 추가할 수 있습니다.
- 코드 온 디맨드(선택 사항)
- 서버는 클라이언트에게 실행 가능한 코드를 전송할 수 있으며, 이를 통해 클라이언트 기능을 확장할 수 있습니다. 예를 들어, 자바스크립트 코드를 클라이언트에 보내어 실행할 수 있습니다.
3. REST API의 구성 요소
- 리소스
- 모든 데이터는 리소스로 표현되며, 각 리소스는 고유한 URI를 가집니다. 예를 들어, 사용자 정보는 /users라는 URI로 접근할 수 있습니다.
- HTTP 메서드
- REST API는 다양한 HTTP 메서드를 사용하여 리소스에 대한 작업을 수행하는데 해당 메서드는 아래와 같습니다.
- GET: 리소스를 조회합니다.
- POST: 새로운 리소스를 생성합니다.
- PUT: 기존 리소스를 업데이트합니다.
- DELETE: 리소스를 삭제합니다.
- PATCH: 리소스의 일부를 수정합니다.
- 헤더와 상태 코드
- 요청과 응답은 헤더를 통해 메타데이터를 전달합니다. 예를 들어, Content-Type 헤더는 응답의 데이터 형식을 지정하고, 상태 코드는 요청의 성공 여부를 나타내며, 200(성공), 404(찾을 수 없음), 500(서버 오류) 등이 있습니다.
4. REST API의 장점
- 확장성
- 클라이언트와 서버의 역할이 분리되기 때문에 시스템 확장성이 높아집니다. 이 때, 서버는 여러 클라이언트와 통신할 수 있고 클라이언트는 다양한 서버에서 데이터를 가져올 수 있습니다.
- 유연성
- REST API는 다양한 데이터 형식을 지원합니다. JSON, XML, HTML 등 여러 포맷으로 데이터를 주고받을 수 있어 유연합니다.
- 사용의 용이성
- REST API는 HTTP 프로토콜을 기반으로 하기 때문에 웹 개발자가 쉽게 이해하고 사용할 수 있습니다. 또한, 많은 프레임워크와 라이브러리가 REST API를 지원하여 개발 속도를 높입니다.
- 인터넷 표준 준수
- HTTP 표준을 준수하기 때문에 보안, 인증, 암호화와 같은 표준 기술을 활용할 수 있습니다.
5. REST API의 단점
- 복잡성
- 대규모 시스템에서는 REST API 설계와 관리가 복잡해질 수 있습니다. 특히 다양한 클라이언트 요구가 많을 경우엔 이를 모두 충족시키기 어려울 수 있습니다.
- 성능
- 무상태성으로 인해 동일한 데이터를 여러 번 요청할 경우 성능 저하가 발생할 수 있습니다. 이를 해결하기 위해 캐싱 메커니즘을 적절히 사용해야 합니다.
- 표준의 한계
- REST는 하나의 소프트웨어 스타일일 뿐 구체적인 구현 표준은 아닙니다. 따라서 개발자마다 다른 방식으로 구현할 수 있어 일관성 유지가 어려울 수 있습니다.
이렇게 오늘은 REST API에 대해 알아봤는데요,
헷갈리기 쉬운 개념인만큼 면접에서도 충분히 나올 수 있는 질문이기 때문에 미리 공부해두면 좋을 것 같네요! 그렇다면 저는 다음에 또다른 면접에 대비한 내용을 들고오도록 하겠습니다 😁!
This post is licensed under CC BY 4.0 by the author.