API와 REST API가 무엇일까?
이름은 비슷한 거 같은데 어떤 개념이고 어떻게 다르고 각각 어떠한 특징을 가지고 있는지 알아보자.
📌 API란?
API는 Application Programming Interface의 약자로 이름에서 알 수 있듯이 두 개의 소프트웨어 프로그램 간에 인터페이스의 역할을 수행한다. 두 개의 프로그램은 정해진 통신 방법을 통해서 메시지를 주고받을 수 있다.
예를 들어 우리는 카카오지도라는 API를 통해서 특정 건물의 위치 정보를 알려달라고 카카오 지도 서버에 메시지를 보낼 수 있다. 반대로 카카오 지도 서버도 API를 통해 요청받은 건물의 위치정보에 대해서 우리에게 메시지를 보내줄 수 있다.
이렇게 서로에게 메세지를 보낼 수 있는 이유는 인터페이스라는 공통 규약이 존재하기 때문이고, 우리는 인터페이스에 적혀있는 방식대로 서로 통신을 할 수 있다.
📌 REST API란?
REST는 Representational State Transfer의 약자로 HTTP통신을 위한 아키텍처이다.
API가 REST의 구조(특징)를 따르고 있다면, 이것을 REST API라고 부를 수 있다.
그렇다면 REST 아키텍처가 되기 위해서는 어떤 구조를 가져야 할까?
- 자원을 나타내는 주소인 URI를 HTTP method로 조작해야 한다.
- 클라이언트-서버 사이에서 요청-응답하는 구조를 갖는다.
- 무상태성 : 서버는 모든 요청에 대해 저장하지 않는다. ex) 로그인정보등을 서버에서 관리하지 않음
- 캐싱가능 : 클라이언트 측에서 서버 응답에 대해 캐싱할 수 있다.
- 계층형 구조 : 여러 개의 개별적인 서버로 구성될 수 있기 때문에, 유연하게 서버를 확장하거나, 암호화 같은 계층을 추가해서 보안성을 강화할 수 있다.
REST는 위와 같은 특징들을 가지고 있다.
REST API는 현대 웹 통신구조에서 가장 많이 사용되고 있는데 아래와 같이 통신한다.
클라이언트가 서버에게 특정 자원에 대해 HTTP메서드(Create, Read, Update, Delete)를 통해 요청을 하고, 서버는 요청한 작업을 수행하고 처리결과를 응답해 준다. 여기서 처리결과는 JSON, XML등 다양한 형태의 데이터가 될 수 있다.
즉, 이러한 방식의 API는 위에서 언급한 REST의 특징들을 가지고 있기 때문에 REST API라고 할 수 있는 것이다.
블로그 예를 들면, 블로그 사용자는 내 블로그 글에 대해서 서버에게
"게시글을 생성해 줘(Create)",
"게시글을 수정하고 싶어(Update)",
"게시글 목록 좀 보여줄래?(Read)"와 같이 요청할 수 있다.
서버 또한 이러한 요청에 대해서
"게시글을 생성했어",
"게시글을 수정했어",
"게시글 목록을 보여줄게"처럼 응답 데이터를 생성해서 전송해 줄 수 있다.
여기서 게시글은 자원을 의미하고, 자원에 대해서 Create, Update, Read와 같이 HTTP메서드를 통해서 서버에게 요청하고 있다.
'Spring' 카테고리의 다른 글
[Spring] HTTP method (0) | 2023.11.06 |
---|---|
[Spring] 스프링 빈과 의존성 주입 해보기 (0) | 2023.11.03 |
[Spring] Controller 구현하기 (0) | 2023.11.02 |
[Spring] Controller, Service, Repository 3계층의 역할 (0) | 2023.10.31 |
[Spring] 의존성 주입과 제어의 역전 (0) | 2023.10.30 |