REST API

Growing_dev·2022년 10월 6일
0

1. REST란

쉽게 말해 REST API는 다음의 구성으로 이루어져있습니다. 자세한 내용은 밑에서 설명하도록 하겠습니다.

자원(RESOURCE) - URI

행위(Verb) - HTTP METHOD

표현(Representations)

2. REST 의 특징

1) Uniform (유니폼 인터페이스)

Uniform Interface는 URI로 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행하는 아키텍처 스타일을 말합니다.

2) Stateless (무상태성)

REST는 무상태성 성격을 갖습니다. 다시 말해 작업을 위한 상태정보를 따로 저장하고 관리하지 않습니다. 세션 정보나 쿠키정보를 별도로 저장하고 관리하지 않기 때문에 API 서버는 들어오는 요청만을 단순히 처리하면 됩니다. 때문에 서비스의 자유도가 높아지고 서버에서 불필요한 정보를 관리하지 않음으로써 구현이 단순해집니다.

3) Cacheable (캐시 가능)

REST의 가장 큰 특징 중 하나는 HTTP라는 기존 웹표준을 그대로 사용하기 때문에, 웹에서 사용하는 기존 인프라를 그대로 활용이 가능합니다. 따라서 HTTP가 가진 캐싱 기능이 적용 가능합니다. HTTP 프로토콜 표준에서 사용하는 Last-Modified태그나 E-Tag를 이용하면 캐싱 구현이 가능합니다.

4) Self-descriptiveness (자체 표현 구조)

REST의 또 다른 큰 특징 중 하나는 REST API 메시지만 보고도 이를 쉽게 이해 할 수 있는 자체 표현 구조로 되어 있다는 것입니다.

5) Client - Server 구조

REST 서버는 API 제공, 클라이언트는 사용자 인증이나 컨텍스트(세션, 로그인 정보)등을 직접 관리하는 구조로 각각의 역할이 확실히 구분되기 때문에 클라이언트와 서버에서 개발해야 할 내용이 명확해지고 서로간 의존성이 줄어들게 됩니다.

6) 계층형 구조

REST 서버는 다중 계층으로 구성될 수 있으며 보안, 로드 밸런싱, 암호화 계층을 추가해 구조상의 유연성을 둘 수 있고 PROXY, 게이트웨이 같은 네트워크 기반의 중간매체를 사용할 수 있게 합니다.

3. REST API란

개별적으로 주소 지정이 가능한 리소스(API의 명사)의 컬렉션으로 모델링됩니다. 리소스는 리소스 이름으로 참조되며 적은 수의 메서드 집합(동사 또는 작업으로도 알려짐)을 통해 조작됩니다.
데이터베이스 트랜잭션과 같이 표준 메서드로 쉽게 매핑되지 않는 기능은 커스텀 메서드(커스텀 동사 또는 커스텀 작업으로도 알려짐)를 사용할 수도 있습니다.

REST API 설계 시 가장 중요한 항목은 다음의 2가지로 요약할 수 있습니다.

첫 번째, URI는 정보의 자원을 표현해야 한다.

두 번째, 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE)로 표현한다.

4. REST 성숙도 모델

성숙도 모델은 총 4단계로 나누어져서 각 단계의 조건에 만족할 수록 REST API에 가까워진다고 한다.

Level 0

Level 0은 웹 매커니즘을 사용하지 않고 HTTP를 원격 호출을 위한 전송 시스템으로 사용하는 경우이다. RPC(Remote Procedure Call)처럼 리소스 구분 없이 설계된 HTTP API이다.

Level 1 : Resources

Level 1은 리소스 개념을 도입한다. 모든 요청을 하나의 End-point로 보내는 것이 아니라 개별 리소스와 통신하게 된다.

HTTP Method는 GET과 POST만 사용하고 StatusCode는 무조건 200으로 전달한다. 헤더에 Content-Type이나 Cache 관련 정보도 제공하지 않는다.

Level 2 : HTTP Verbs

Level2는 4가지 HTTP Method를 사용해서 CRUD를 표현하고 StatusCode도 활용하여 반환한다.

URI에는 행위(Action)가 포함되지 않고 HTTP Method로 표현한다. GET은 매번 같은 결과를 반환하고, 헤더에 Content-Type을 제공하고 멱등성을 보장하는 GET의 경우 캐시가 적용된다.

현재 가장 많은 REST API가 이 단계에 해당한다고 한다.

Level 3 : Hypermedia Controls

마지막 단계인 Level 3이다. API 서비스의 모든 End-point를 최초 진입점이 되는 URI를 통해 Hypertext Link 형태로 제공한다.

추가적으로 다음 Request에 필요한 End-point까지 제공을 한다. 이는 Uniform Interface의 HATEOAS를 의미한다.

5.Open API

이 API에는 "Open"이라는 키워드가 붙어 있습니다. 글자 그대로 누구에게나 열려있는 API입니다. 그러나 "무제한으로 이용할 수 있다"라는 의미는 아닙니다. API마다 정해진 이용 수칙이 있고, 그 이용 수칙에 따라 제한사항(가격, 정보의 제한 등)이 있을 수 있습니다.

6.API Key

API를 이용하기 위해서는 API Key가 필요합니다. API key는 서버의 문을 여는 열쇠입니다. 서버를 운용하는 데에 비용이 발생하기 때문에 서버 입장에서 아무런 조건 없이 익명의 클라이언트에게 데이터를 제공할 의무는 없습니다. (가끔 API key가 필요하지 않은 경우도 있습니다.)

API Key가 필요한 경우에는 로그인한 이용자에게 자원에 접근할 수 있는 권한을 API Key의 형태로 제공하고, 데이터를 요청할 때 API key를 같이 전달해야 원하는 응답을 받을 수 있습니다.

Reference:
https://meetup.toast.com/posts/92
https://jaehoney.tistory.com/176

profile
github ( https://github.com/sktjgudals ) gitlab ( https://gitlab.com/sktjgudals10 )

1개의 댓글

comment-user-thumbnail
2022년 10월 6일

잘보고가욥 :D

답글 달기