기록하는 개발자

rest API란? 본문

Web

rest API란?

밍맹030 2022. 8. 5. 14:31
728x90

REST(REpresentational State Transfer)

REST는 HTTP기반으로 필요한 자원에 접근하는 방식을 정해놓은 아키텍쳐이다.

(여기서 말하는 자원은 저장된 데이터(DBMS), 이미지, 동영상, 문서, 서비스를 모두 포함한다.)

 

[  REST의 속성  ]

1) 서버에 있는 모든 자원마다 클라이언트가 바로 접근 할 수 있는 고유 URI가 존재한다.

2) 모든 요청은 클라이언트가 요청할 때마다 필요한 정보를 주기 때문에 서버에서는 세션 정보를 보관할 필요가 없다. 따라서 서비스의 자유도가 높아지고 유연한 아키텍쳐 적응이 가능하다.

3) 모든 자원은 http 인터페이스인 GET, POST, PUT, DELETE 4개의 메소드(HTTP 메소드)로 접근 되어야 한다.

4) 서비스 내에 하나의 자원이 주변에 연관된 자원들과 연결되어 표현이 되어야 한다.

 

[  REST의 구성요소  ] : resource, method, message

 

Resource

REST에서는 자원에 접근 할 때 URI(Uniform Resource Identifier)로 하게 된다

 

Method

자원에 접근할 때 어떤 성격의 요청인지 HTTP 메소드가 알려줍니다.

종류 : GET, POST, PUT, DELETE

 

Message

메시지는 HTTP header와 body, 응답상태코드로 구성되어 있으며 header와 body에 포함된 메시지는 메시지를 처리하기 위한 충분한 정보를 포함한다.

 

- Body : 자원에 대한 정보를 전달한다.(데이터 포맷: JSON/ XML/ 사용자 정의 포맷)

 

- Header : HTTP 바디에 어떤 포맷으로 데이터가 담겼는지 정의한다.

 

 

[  REST 의 특징  ]

 

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

 - 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, 게이트웨이 같은 네트워크 기반의 중간매체를 사용할 수 있게 한다.

 

 

 

[   REST의 장.단점  ]

 

장점

  1. SOAP(다른 통신방식)보다 개발이 쉽고 단순하다.
  2. REST가 지원하는 프레임워크나 언어등 도구들이 없어도 구현이 가능하다.
  3. 기존 웹 인프라를 사용가능하다. HTTP를 그대로 사용하기 때문에 그런 것이다.
  4. 언어와 플랫폼에 독립적이다.

단점

  1. HTTP 프로토콜만 사용이 가능하다.
  2. p2p 통신 모델을 가정했기 때문에 둘 이상을 대상으로 하는 분산환경엔 유용하지 않다.
  3. 보안, 정책등에 대한 표준이 없기 때문에 관리가 어렵고 이러한 부분까지 고려해서 구현 할 경우 설계나 구현에서 좀 더 어려움을 갖는다.
728x90