1. 개요

- API 중 대표적으로 가장 많이 사용하는 RESTfull API가 무엇인지 알아보자.

- 하나의 서버로 여러대의 클라이언트를 대응하도록 할때 필요한것이 RESTFul API입니다.

 

2. URI 설계

- RFC3986 규칙을 기준으로 설명

1) 소문자를 사용한다.

 

2) 하이픈을 사용하자.

- 공백은 %20으로 표현되기 때문에 공백보다는 하이픈(-)을 사용하자.

 

 

3) 확장자를 사용하지 말자.

- 여러 확장자를 사용해서 uri를 정하지 말고 header를 파싱하여 종류(.txt, .csv, ...)에 맞게 응답해준다.

- 하나의 uri로 여러 응답을 만들기 위한 방법으로 Accept를 사용한다.

 

예시)

GET /hello HTTP/1.1

Host: remotty.com

Accept: text/csv,text/html;q=0.5,application/xml;q=0.6,text/plain;q=0.9,application/pdf,*/*;q=0.3

 

위의 경우 우선순위는 Accept에 q의 값을 순서대로(구분자 콤마(,)) 우선순위가 책정된다.

(q의 생략은 q=1.0과 같다.)

text/cvs => application/pdf => text/plain => application/xml => text/html => */*

 

4) CRUD를 URI에 사용하지 않는다.

- CRUD를 URI에 표시해주지 않고 헤더 데이터에 넣어서 사용하자.

 

5) 컬렉션과 도큐먼트

- 도큐먼트는 정보이고 컬렉션은 그 정보들의 집합이다.

http://www.remotty.com/sports/soccer

http://www.remotty.com/sports/soccer/players

http://www.remotty.com/sports/soccer/players/13/skills

- sport: 컬렉션 => soccer: 도큐먼트 => soccer: 컬렉션 => players: 도큐먼트 => 13: 컬렉션 => skills: 도큐먼트

- 이와 같이 도큐먼트는 또 다른 컬렉션을 가질 수 있다.

- 도큐먼트는 단수, 컬렉션은 복수로 표현해준다.

 

6) HTTP Method의 알맞은 역할

- POST, GET, PUT, DELETE를 사용하여 CRUD를 사용한다.

- POST는 리소스의 하위에 새로운 리소스를 생성

- GET은 현재 리소스를 조회 보여줌

- PUT은 현재 리소스를 수정

- DELETE는 현재 리소스를 삭제

 

3. PATCH

- 이 부분은 라우터와 PUT에 관련되어 있다고 하는데 좀 더 알아볼 필요가 있다.

 

참고자료)

http://blog.remotty.com/blog/2014/01/28/lets-study-rest/#uri

+ Recent posts