RESTFul이란 - 개념과 기본 내용
많은 어플리케이션과 서비스들은 WebAPI를 제공하고 있습니다.
WebAPI 중에서도 RESTFul API(이하 REST API)라는 용어를 많이 들어보게 되는데, 해당 기술에 대해 알아 보겠습니다.
REST API란?
REST API란 웹 시스템을 외부로부터 이용하기 위한 프로그램 호출(혹은 설계) 규약(API)의 한 종류로써, REST라고 불리는 설계원칙에 따라 구성된 것을 의미합니다.
REST 정의
REST란 Representational State Transfer의 약자로써, Web서비스의 설계 모델을 의미합니다.
REST한 Web 서비스는, 해당 서비스의 URI에 HTTP메소드로 액세스 함으로써 데이터 송수신을 합니다.
REST의 원칙
하기의 원칙을 만족하는 어플리케이션을 RestFul하다고 간주할 수 있습니다.
-
HTTP를 베이스로 한 무상태성(stateless) 클라이언트/서버 프로토콜
무상태성(stateless)이란, 시스템이 현재의 상태를 나타내는 데이터를 보유하지 않고, 단지 입력 내용에 따라 출력 내용이 결정되는 방식을 의미합니다. 즉, 무상태성을 지니는 시스템은 같은 입력에 대해 언제나 같은 출력을 하게 됩니다.
REST API는 서버로의 요청(reqeust)이나 클라이언트로의 응답(response)이 모두 무상태성이란 특징을 가져야 합니다.
클라이언트와 서버 사이에 통신을 하는 동안, 클라이언트의 상태(context)는 서버에 저장되지 않습니다. 각각의 요청은 클라이언트가 필요로 하는 모든 정보를 포함하고 있어야 합니다.
무상태성을 가지는 서버의 단점으로는, 필요한 모든 정보를 각각의 요청에 전부 담은 상태로 전송해야 하므로 네트워크 성능이 저하되는 점입니다.
-
하이퍼미디어(링크)를 사용 - 접속성(Connectivity)
정보 내부에 다른 정보나 해당 정보의 다른 상태로의 링크를 포함합니다.
-
모든 정보(리소스)에 적용 가능한 HTTP 메소드 - 통일된 인터페이스
REST API에서 접근 가능한 모든 리소스는 각각 고유의 URI를 최소한 1개 이상 가지고 있습니다.
그리고 각 URI에 대해서 기본적으로 4개의 HTTP 메소드를 가지고 서버에 요청(request)함으로써 모든 리소스에 대한 조작이 이루어 집니다.
4개의 메소드는 다음과 같습니다.
메소드 역할 CRUD조작 GET 리소스를 취득 CREATE POST 리소스 신규작성 READ PUT 기존 리소스 업데이트 UPDATE DELETE 리소스 삭제 DELETE -
URI로 리소스 식별
모든 리소스는 URI로 표현되는 유일한 어드레스를 가져야 합니다.
-
처리 결과를 HTTP 상태코드(status code)와 반환
상태코드란 웹 서버로부터의 응답의 종류를 나타내는 코드입니다.
하기의 표는 자주 사용되는 상태코드의 종류입니다.
코드 상태 설명 200 OK 요청이 정상적으로 처리됨 201 Created 요청이 정상적으로 처리되고, 신규 리소스가 작성됨 204 No Content 요청이 정상적으로 처리되었지만, 응답할 신규 정보는 없음 400 Bad Request 서버가 이해할 수 없는 무효한 요청임 401 Unauthorized 요청된 리소스는 인증이 필요함 403 Forbidden 요청된 리소스는 거부됨 404 Not Found 요청된 리소스는 서버에 존재하지 않음 500 Internal Server Error 서버에서 에러가 발생함