◾
Rest
란 (Respresentational State Transfer)의 약자로 자원의 이름으로 구분하여 해당 자원의 상태를 주고 받는 모든 것을 의미한다. 일반적으로json
혹은xml
을 통해 데이터를 주고 받는 것이 일반적이다. 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 화용하기 때문에 웹의 장점을 최대한 이용할 수 있다. 네트워크상의Client
와Server
사이의 통신 방식 중 하나이다.
◾API
란 (Application Programming Interface)의 약자이다. 프로그램들과 db그리고 기능들의 상호 통신 방법을 규정하고 도와주는 매개체![]
이다.
db에 정보가 저장되고 모든 사람들이 db에 접근하지 못하게 제어한다. 또한 모든 접속을 표준화하여 누구나 동일한 엑세스를 얻을 수 있다.
간단하게 말하면 REST를 기반으로 서비스 API를 구현한 것이다. 누구나 사용할 수 있는 공개된 Open API는 대부분 REST API를 제공하고 있다.
◽ resource는 동사보다 명사, 대문자보다 소문자 사용
◽ resource의 도큐먼트 이름으로는 단수 명사를 사용해야 한다.
◽ resource의 컬렉션 이름으로는 복수 명사를 사용해야 한다.
◽ resource의 스토어 이름으로는 복수 명사를 사용해야 한다.
Create
, Read
, Update
, Delete
의 앞 알파벳을 따서 CRUD
라 한다. CRUD같은 경우 db 어플리케이션에서 수행할 수 있는 기본작업이다. 반면 REST API
는 GET
, POST
등과 같은 자체 데이터 조작 방법이 있는 HTTP 프로토콜을 통해 소통한다. 서로 비슷하지만 똑같은 것은 아니다.
◽ PUT
은 해당 리소스가 아직 존재하지 않더라도 리소스를 대체하지만 POST
는 새 리소스를 추가한다. 둘 다 새 리소스를 만드는데 사용할 수 있지만 PUT
은 주로 기존 리소스를 업데이트한다.
◽ PATCH
는 리소스의 일부를 업데이트 하는 데 사용되지만 PUT
은 전체 리소스를 교체하여 업데이트 하는데만 사용된다.
◽ POST
는 리소스 고유의 특정 의미에 따라 처리되어 포괄적인 기능을 한다.
◽ 슬래시 구분자(/)는 계층 관계를 나타내는데 사용한다.
◽ URI마지막 문자로 슬래시를 포함하지 않는다.
http://restapi.menu/pizza/hot/ (x)
http://restapi.menu/pizza/hot (o)
◽ 하이픈(-)은 URI가독성을 높이는데 사용하고 밑줄(_)은 사용하지 않는다.
◽ 되도록 소문자가 적합하다.
◽ RESTful은 일반적으로 REST라는 아키텍쳐를 구현하는 웹 서비스를 나타내기 위해 사용되는 용어다.
◽ REST API를 제공하는 웹 서비스를 RESTful하다고 할 수 있다. 공식적으로 발표한 것은 아니지만 REST원리를 따르는 시스템이라고 이야기 된다.
❌ CRUD기능을 모두 POST로만 처리하는 API
❌ route에 resource, id외의 정보가 들어가는 경우