REST란?
REST(Representational State Transfer)는 웹의 장점을 최대한 활용할 수 있는 아키텍처로, REST 아키텍처는 Hypermedia API의 기본을 충실히 지키면서 범용성을 보장합니다.
REST의 특징
1. Uniform (유니폼 인터페이스)
Uniform Interface는 URI로 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행하는 아키텍처 스타일
2. Stateless (무상태성)
상태가 있다 없다는 의미는 사용자나 클라이언트의 컨택스트를 서버쪽에 유지 하지 않는다는 의미.세션이나 쿠키등을 별도로 관리하지 않기 때문에 API서버는 요청만을 들어오는 메시지로만 처리하기 때문에 구현이 단순하다.
3. Cacheable (캐시 처리 가능)
REST의 가장 큰 특징 중 하나는 HTTP라는 기존 웹표준을 그대로 사용한다.HTTP가 가진 캐싱 기능이 적용 가능하다. HTTP 프로토콜 표준에서 사용하는 Last-Modified태그나 E-Tag를 이용하면 캐싱 구현이 가능하다.
4. Self-descriptiveness (자체 표현 구조)
REST의 또 다른 큰 특징 중 하나는 REST API 메시지만 보고도 이를 쉽게 이해 할 수 있는 자체 표현 구조로 되어 있다는 것
5. Client - Server Architecture (클라이언트 - 서버 구조)
REST 서버는 API를 제공하고, 제공된 API를 이용해서 비즈니스 로직 처리 및 저장을 책임진다.클라이언트의 경우 사용자 인증이나 컨택스트(세션,로그인 정보)등을 직접 관리하고 책임진다.서로간의 의존성이 줄어들게 된다.
6. 계층형 구조
클라이언트 입장에서는 REST ApI 서버만 호출한다.REST 서버는 다중 계층으로 구성될 수 있다. 예를 들어 보안, 로드 밸런싱, 암호화, 사용자 인증등등 추가하여 구조상의 유연성을 줄 수 있다.
REST API 규칙
1. URI는 정보의 자원을 표현해야 한다.
GET /course/insert/inform – X
GET /course/inform – O
HTTP Method (GET, PUT, POST, DELETE등등)의 행위가 URI 표현으로 들어가서는 안된다.
2. 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE 등)로 표현
HTTP Method(GET, PUT, POST, DELETE등등)로 행위로 CRUD를 할 수 있다.
URI 설계 시 유의점
- 슬래시 구분자(/)는 계층관계를 나타내는 데 사용한다.
- URI 마지막 문자로 슬래시(/) 포함하지 않는다.
- 하이픈(-)은 URI 가독성 높이는데 사용한다. (경로가 불가피하게 긴 경로의 경우)
- 언더스코어(_) 는 URI에 사용하지 않는다
- URI 경로에는 소문자가 적합하다.
- 파일 확장자는 URI에 포함시키지 않는다
HTTP 응답 상태 코드
- 2xx : 클라이언트의 요청이 서버측에서 성공적으로 수행했음을 의미
- 200 OK : 요청을 정상적으로 수행
- 201 Create : 리소스 생성 요청 시 해당 리소스 성공적으로 생성
- 204 No Content : 요청 정상수행 했으나 콘텐츠는 없음
- 3xx : 리소스가 이동하거나 삭제된 경우 자동으로 리다이렉트 시켜줌
- 301 Moved Permanetly : 요청한 리스스의 URI가 변경, 새로운 URI가 location 응답헤더에 주어짐(여기로 리다이렉트)
- 304 Not Modified : 이전에 요청한 것과 달라진 점이 없는 경우, 캐싱해놓았던 리소스 사용
- 4xx : 클라이언트측의 요청이 잘못되어 Error 발생
- 400 Bad Request : 클라이언트측의 요청이 부적절한 경우
- 401 Unauthorized : 클라이언트가 권한이 없는 리소스를 요청한 경우
- 403 Forbidden : 유저 인증상태와 관련없이 응답하고 싶지 않은 리소스 요청했을 경우
- 404 Not Found : 요청한 리소스와 매칭되는 리소스가 없는 경우
- 5xx : 서버측의 문제로 인하여 Error 발생
- 500 Internal Server Error : 일반적으로 서버에 문제가 있는 경우
✅ 403을 이용하면 리소스를 받을 수 없기는 하지만 존재하는 페이지로 인식하여 해커들의 공격을 받을 수 있으므로 404를 대신 사용하여 없는 페이지로 위장하는 경우도있다.
'DevOps 부트캠프 > 네트워크' 카테고리의 다른 글
Nginx를 이용한 Reverse Proxy 및 캐시 설정 (0) | 2022.03.30 |
---|---|
프록시(proxy)란?_proxy, web cache (0) | 2022.03.14 |
TCP vs UDP (0) | 2022.03.14 |
HTTP Method란? _ HTTP 주요 Method (0) | 2022.03.14 |
댓글