@마크다운
패스트캠퍼스 스쿨 과정을 끝마치기 직전 모의 기술면접을 봤는데
"너희가 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 |