REST는 Representational State Transfer 의 약자로 2000년에 로이 필딩 박사의 논문에서 최초로 소개되었다. 로이 필딩은 HTTP의 주요 저자 중 한 사람으로 그 당시 웹 (HTTP) 설계의 우수성에 비해 제대로 사용되어지지 못하는 모습에 안타까워하며 웹의 장점을 최대한 활용할 수 있는 네트워크 아키텍처로써 REST를 발표했다. 쉽게 말하면 '네트워크에서 통신을 구성할 때 이런 구조로 설계하라는 지침' 정도로 볼 수 있다.
본디 네트워크 통신을 위해 제시하였으나, 현실적으로 네트워크의 지분 중 태반을 차지하는게 월드 와이드 웹이기 때문에 '웹' 기반의 전송을 위해 쓰이는 경우가 대부분이다. 태생 자체가 데이터 송수신에 최적화 되어 있다보니 이를 위한 웹 API 쪽에서 굉장히 많이 쓰인다. 이를 REST API 라고 부르는데, 이제는 그냥 웹 API와 동일하다고 볼 수 있을 정도로 보편화되었다.
REST는 웹에서 데이터를 전송하고 처리하는 방법을 정의한 인터페이스를 말한다.
HTTP URI (Uniform Resource Identifier)를 통해 자원 (Resource)을 명시하고, HTTP Method를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.
웹 사이트의 이미지, 텍스트, DB 내용 등의 모든 자원에 고유한 ID인 HTTP URI를 부여한다.
CRUD Operation
CRUD는 대부분의 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능인Create
,Read
,Update
,Delete
를 묶어서 일컫는 말이다. 사용자 인터페이스가 갖추어야 할 기능(정보의 참조 / 검색 / 갱신)을 가리키는 용어로서도 사용된다.
URI
HTTP Method
RESPT API는 REST의 원리를 따르는 API를 말한다.
API (application programming interface)는 컴퓨터나 컴퓨터 프로그램 사이의 연결로 일종의 소프트웨어 인터페이스이다.
REST API 설계 시 가장 중요한 항목은 다음의 2가지다.
- URI는 정보의 자원을 표현해야 한다.
- 자원에 대한 행위는 HTTP Method로 표현한다.
URI는 동사보다는 명사를, 대문자보다는 소문자를 사용해야 한다.
Bad Example http://nhs1016.com/Running/
Good Example http://nhs1016.com/run/
마지막에 슬래시 /
를 포함하지 않는다.
Bad Example http://nhs10163.com/test/
Good Example http://nhs1016.com/test
언더바 대신 하이폰을 사용한다.
Bad Example http://nhs1016.com/test_blog
Good Example http://nhs1016.com/test-blog
파일확장자는 URI에 포함하지 않는다.
Bad Example http://nhs1016.com/photo.jpg
Good Example http://nhs1016.com/photo
행위를 포함하지 않는다.
Bad Example http://nhs1016.com/delete-post/1
Good Example http://nhs1016.com/post/1