Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- SQL
- dictionary
- stateless
- Django
- Git
- Bruteforce
- 백준
- ws
- was
- greedy
- Gunicorn
- Query
- Q objects
- utils
- postreSQL
- pytest
- Programmers
- stateful
- Python
- Stack
- codecov
- HTTP 완벽 가이드
- stack&que
- combinations
- ORM
- permutations
- TDD
- AWS
- algorithm
- Unit Testing
Archives
- Today
- Total
해피 코딩!
REST 본문
틀리다고 생각하시는 부분을 지적해주세요! 피드백을 환영합니다!
REST
면접에서 나올 질문을 대비하여 생각을 정리할겸 문서화 합니다.
틀린 내용은 피드백 부탁드리겠습니다.
REST 등장 배경
REST api의 등장은 2000년도에 HTTP의 주요 저자 중 한 사람인 로이 필딩이 그 당시 웹(HTTP) 설계의
우수성에 비해 제대로 사용되어지지 못하는 모습에 안타까워하며 웹의 장점을 최대한 활용할 수 있는 아키텍처로써 REST를 발표 하였습니다.
REST 의미
REST(Representational State Transfer) 라고 하며, 소프트웨어 아키텍쳐의 한 형식 입니다.
소프트웨어 아키텍쳐: 주로 서버를 중심으로 동작되는 소프트웨어들의 논리적 형상에 대한 "구조"
시스템 아키텍쳐: 서버, 네트웍크 장비들을 포괄한 인프라의 물리적 형상의 "구조"
- 자원을 구분하여 해당 자원의 상태(정보)를 주고 받는 것을 의미합니다.
- 데이터가 요청 되는 시점에서 정보를 json, xml 등으로 전달한다.
- 웹 기술과 HTTP를 사용하기에 웹의 장점을 최대한 사용할 수 있다.
- 네트워크를 통하여 client와 server간의 통신 수단이다.
REST 개념
HTTP URI를 통해 Resource를 명시하고, HTTP method를 통해 자원에 대한 CRUD Operation을 적용
프로토콜이나 표준이 아니다.
방식을 약속하는 코딩 컨벤션과 비슷한 개념이다.
REST 구성 요소
- 자원 Resource : URL
- 모든 자원은 고유한 ID가 서버에 존재
- 자원을 구별하는 ID는 HTTP URI이다.
- client는 URI을 이용하여 자원을 지정하고, 자원의 정보를 서버에 요청한다.
- 행위 Verb : HTTP method
- HTTP가 지원하는 method 사용
- 표현 Representations
- client가 자원의 상태를 요청하면 서버는 응답을 보낸다.
- json, xml 등으로 이루어짐.
REST 장점
- REST API 가 의도하는 바를 명확하게 나타내므로 요청에 따른 응답을 쉽게 파악할 수 있다.
- 서버와 클라이언트의 역할을 명확하게 분리한다.
REST 단점
- HTTP Method 형태가 제한적이다.
REST 특징
- server, client
- 자원이 있는 쪽이 서버, 자원을 요청하는 쪽이 client이다.
- statelesss : 무상태
- client의 context를 서버에 저장하지 않음( 세션과 쿠키 같은 context 정보를 서버는 신경쓰지 않음)
- 서버는 각각의 요청을 별개의 요청으로 처리한다
- 각 API는 요청받은 동작만 수행
- 각 요청간의 종속성이 없다.
- 서버의 처리 방식에 일관성이 부여되고, 서비스의 자유도가 증가.
- cachealble
- HTTP를 사용하여 웹에서 사용하는 기존 인프라 사용 가능
- HTTP의 장점인 캐시 사용이 가능.
- 캐시 사용을 통하여 응답시간이 빨라지고, 트랜잭션이 발생하지 않아 서버의 성능을 증가시킴.
- HTTP를 사용하여 웹에서 사용하는 기존 인프라 사용 가능
RESTful
RESTful이란
- REST라는 소프트 아키텍쳐를 구현한 웹 API 서비스.
- REST API를 제공하는 웹 서비스.
REST API
- 소문자를 사용
- 하이픈 사용
- 언더바 사용하지 않음
- 확장자 사용 안함
- 어떤 구조를 따르던지 가능한 한 로직은 API 뷰에서 분리한다.
- 제한 없는 API 접속은 굉장히^10 위험하다.
- 반드시 접속을 제한해야 한다. (nginx를 이용한 접속 제한 방법도 있다.)
알게된 개념
- status 중 410이 있다. 더는 제공되지 않는 메서드를 호출할 때 사용하며 새 버전의 API를 제공하기 위해 기존 API 서비스를 중지할 때 사용한다.
- API 버저닝 : API의 URL 에서 버전 정보를 나타내는 것은 유용하다.
api/v1/user/
나api/v2/user
이런식이며 기존 이용자들은 이전 버전으로 API를 호출함으로서 기존 구성에 급작스러운 문제를 일으키지 않는 장점이 있다. - API를 구현할 때는 이용자와 고객에게 시간적 여유를 충분히 주고 이전 API 중단에 대해 경고함으로 기존 앱을 업그레이드 하여 앱 서비스가 중단되지 않도록 한다.
Comments