REST API란 무엇인가?
REST API는 개발자들 사이에서 널리 쓰이는 일종의 형식이다. 예를 들면, 어떤 홈페이지에 로그인을 하기 위해서는 회원가입을 하게 되는데, 기본적으로 회원가입을 할 때 떠오르는 것들은 무엇인가? 일반적으로 아이디와 패스워드와 같은 구성이 떠오를 것이다. 이런 것처럼 개발자들 사이에서도 REST API를 얘기 할 때, 공통적으로 떠오르는 형식이다. 제품이 아닌 형식이기 때문에 어떤 프로그래밍 언어나 프레임워크를 쓰든 이 형식에 맞춰서 기능을 만들어내면 되는 것이다.
API란?
API를 이해하기 위해서는 라이브러리를 이해해야한다. 라이브러리는 함수들의 집합이라고 할 수 있는데, 미리 함수를 모아 놓은 곳을 말한다. 도서관에서 필요한 책을 빌리듯 라이브러리에서 필요한 함수를 찾아 쓸 수 있다. 라이브러리에 접근하기 위한 규칙들을 정의한 것을 API라고 한다. 즉 프로그래머가 API 이용할 때, 함수의 내부 구조는 알 필요없이 단순히 API에 정의된 입력 값을 주고 결과 값을 사용할 수 있게 해준다. 따라서 REST API도 'REST'란 형식으로 규칙등을 정의 한 것이다.
REST는 또 무엇인가?
- REST(Representational State Transfer)는 네트워크를 통해서 컴퓨터들끼리 통신할 수 있게 해주는 아키텍처 스타일이다.
- REST는 URI와 HTTP 프로토콜 기반으로 한다.
- REST는 HTTP 프로토콜 덕분에 '단순함'이 핵심이라고 할 수 있다.
- 데이터 포맷으로는 브라우저 간 호환성이 좋은 제이슨(JSON)을 사용한다.
- REST는 구축과 확장이 간단하지만, 크고 복잡하게 만들 수도 있다.
- REST의 가장 중요한 특성은 각 요청이 어떤 동작이나 정보를 위한 것인지를 그 요청의 모습 자체로 추론이 가능하다. 따라서 유지보수에도 수월하다.
- REST를 사용하기 전에는 SOAP이라는 규약이 있었다.
REST API의 기본적인 정의
1. Client, Server : 클라이언트와 서버가 서로 독립적으로 분리 되어 있어야 한다.
2. Stateless : 요청에 대해서 클라이언트의 상태를 서버에 저장하지 않는다.
- 치즈버거 주세요.
- 치즈버거와 콜라를 주세요. (이전 요청을 저장하지 않음)
3. Cache : 클라이언트는 서버의 응답을 Cache(임시저장) 할 수 있어야 한다.
- 클라이언트가 Cache를 통해서 응답을 재사용할 수 있어야 하며, 이를 통해서 서버의 부하를 낮춘다.
4. 계층화 (Layered System) : 서버와 클라이언트 사이에, 방화벽, 게이트웨이, Proxy 등 다양한 계층 형태로 구성이 가능해야 하며, 이를 확장 할 수 있어야 한다.
5. 인터페이스 일관성 : 인터페이스의 일관성을 지키고, 아키텍처를 단순화시켜 작은 단위로 분리하여, 클라이언트, 서버가 독립적으로 개선될 수 있어야한다.
1) 자원의 식별
- 웹 기반의 REST에서는 리소스 접근을 할 때 URI를 사용
- Resource : user
- 식별자 : 100
- URI : 식별자, 컨트롤러를 만든다는 것은 URI를 만든다는 것
- URL: 위치, 서버에 있는 폴더 위치로 찾아감
- 참고자료 ) https://blog.naver.com/ghdalswl77/222454095003
2) 메시지를 통한 리소스 조작
3) 자기 서술적 메시지
- HTTP 기반의 REST에서는 HTTP Method와 Header 정보, 그리고 URI의 포함되는 정보로 표현할 수 있어야 함
- GET : https://foo.co.kr/user/100, 사용자의 정보 요청
- POST : https://foo.co.kr/user , 사용자 정보 생성
- PUT : https://foo.co.kr/user , 사용자 정보 생성 및 수정
- DELTE : https://foo.co.kr/user/100 , 사용자 정보 삭제
4) 애플리케이션 상태에 대한 엔진으로서 하이퍼미디어
6. Code on Demand (Optional) : 자바 애플릿, 자바스크립트, 플래시 등 특정한 기능을 서버로부터 클라이언트가 전달받아 코드를 실행 할 수 있어야 한다.
*RESTful 하다는 것은 위의 조건을 잘 지켜졌을 때 쓰임
댓글