REST (Representational State Transfer)
어떤 자원에 대해 CRUD를 수행하기 위해 URI(Resource)로 자원을 특정하고 HTTP Method로 행위를 요청하며 상태를 결과로서 전달하는 방식의 웹 아키텍쳐이다.
이때 자원은 특정한 형태(Representation of Resource)로 표현되며 형태는 JSON, XML, RSS 등이 있으며 상태는 201, 404와 같은 HTTP status code가 있다.웹의 장점을 최대한 활용하며 HTTP 프로토콜을 그대로 활용하는 클라이언트와 서버 사이의 통신 방식 중 하나이다.
REST API 는 위 REST의 설계를 따르는 인터페이스이다.
HTTP프로토콜을 이용해 URI로 서버에 접근하여 HTTP Method 로 URI에 해당하는 자원을 CRUD 등의 요청을 받아 처리하는 형태이다.
내가 생각할 때,
URI라는 자원에 대해서 GET, DELETE 등의 HTTP Method로 행위를 유추할 할 수 있게 만들어져야한다.
이렇게 되면 자연스럽게 https://api.??.com/board/1
1번 게시글이라는 자원만 나타내고 이 게시글에 대해서 GET, DELETE, PATCH 등의 HTTP Method 로만 행위를 표현하고 HTTP status code 로 응답을 받는 것이 REST API 라고 정리하고 싶다.
(새로운 게시글을 등록하는 경우 POST 메소드로 JSON, XML등의 형태로 전달된다.)
REST의 규칙을 기반으로 설계된 API 서버는 RESTful 하다 라고 한다.
REST API와 RESTful API는 거의 같은것 같지만 굳이 나눠보자면
REST API의 경우 'REST로 구현된다면 이렇게 되어야만 한다' 라는 느낌의 개념이 강한것 같고
RESTful API의 경우 저런 REST의 규칙을 지향하기 때문에 RESTful 하다고 하는것 같다.