본문 바로가기

etc

REST가 무엇인가?

@마크다운


패스트캠퍼스 스쿨 과정을 끝마치기 직전 모의 기술면접을 봤는데


"너희가 REST를 썼구나! 그래서 REST가 뭐니?"


대답을 못했다.


아직 갈길이 먼 실력이지만 이론은 더 처참했다.


그래서 까먹을 때 마다 보려고 블로그에 적어둔다.


틀린내용일수도 있습니다.

틀리다고 생각되면 댓글로 알려주시면 정말 감사합니다.


## REST, RESTful API


### REST가 무엇인가?


```

한줄요약: URI와 HTTP method를 이용해 객체화된 서비스에 접근하는 것

```


직관적인 URI와 행위(http method)를 통하여 자원에 접근하는 것이다.


#### REST 규칙


- URI는 정보의 자원을 표현해야 한다.(동사 보다는 명사)

1. 유저에 접근할 때 /members/1(pk)

2. 틀린 예 /members/delete/1


> URI는 정보의 자원을 표현해야하며 delete는 행위를 말한다.

> 행위는 mehtod로 표현하는게 REST API의 규칙이다. 


- 자원에서 일어나는 행위는 HTTP Method로 표현한다.

- 대표적인 HTTP Method는 크게 4가지가 있다.

1. GET

2. POST

3. PUT ( PATCH )

4. DELETE


| METHOD | 역할 |

|----|---------|

| POST | 리소스를 생성 |

| GET | 리스트를 조회하고 정보를 가져온다 |

| PUT | 해당 리소스를 수정(전체) |

| PATCH | 해당 리소스를 수정(일부) |

| DELETE | 리소스 삭제 |


> PUT과 PATCH의 차이

> user모델안에 `user_id`,`user_name`,`user_age`라는 필드가 있다 가정할 때,

> PUT요청시 `user_name`만 수정하더라도 항상 모든필드들을 가져와서 모든 필드를 새로운값으로 수정

> PATCH요청시 변경되는 부분만을 새로운값으로 수정


- URI설계시 슬래시(/)는 계층 관계를 나타낼 때 사용

- URI마지막 문자로 슬래시(/)는 사용하지 않음


> 마지막에 / 를 사용하지 않는 이유는 계층관계에 혼동을 주지 않도록 하기 위함 /로 끝나면 뒤에 더있을지도 모른다고 착각


- URI설계 시 _는 사용하지 않음(보기어려움) (-) 사용

- 경로는 소문자로

- 파일 확장자는 경로에 포함하지 않는다.


### REST 특징


- URI를 이용 : Addressability

- URI로 지정한 리소스에 대한 직관적인 접근

- ex) 1번 유저에 대한 상세정보를 보고자 할 때

- /members/1

- Stateless(무상태성)

- 이전,이후의 대한 정보가 필요없이 단순히 들어오는 요청만을 처리

- 별도의 세션정보나 쿠키정보를 저장,관리하지 않아도 된다.

- 서비스의 자유도가 높아지고 유연한 아키텍처 적용이 가능

- self-descriptiveness(자체 표현 구조)

- REST API 메시지만을 보고도 쉽게 이해할 수 있는 자체 표현 구조로 되어있다.

- HTTP Method를 사용(Homogeneous interface)

- HTTP에서 제공하는 메서드들을 사용한다는 점

- CRUD기능 이외의 작업에 대해서는 URI를 적절히 정의하여 설계가 필요함(ex. 메일전송)  

 

'etc' 카테고리의 다른 글

django 예약기능  (2) 2017.09.12
AWS Route53 설정하기  (0) 2017.09.08
유저 모델링 실수 (migrations history error)  (0) 2017.09.06
Login 시나리오  (1) 2017.08.29
HTTP가 무엇인가?  (0) 2017.08.29