본문 바로가기
Programming/기본기

REST API

by Teshub 2021. 2. 25.

REST의 정의

- Representational State Transfer의 약자이다

  - 자원을 이름으로(자원의 표현)으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미한다.

  - 즉 , 자원의 표현에 의한 상태 전달이다

  - Ex) DB의 학생 정보가 자원일때 student를 자원의 표현으로 정한다

 

REST의 특징

- Stateless 무상태성

 작업을 위한 상태 정보를 따로 저장하고 관리하지 않습니다. 세션 정보나 쿠키 정보를 별도로 저장하고 관리하지 않기 때문에 API 서버는 들어오는 요청만을 단순히 처리하면 됩니다. 때문에 서비스의 자유도가 높아지고 서버에서 불필요한 정보를 관리하지 않음으로써 구현이 단순해집니다.

 

- Self-descriptiveness 자체 표현 구조

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

 

- Client - Server  구조

REST 서버는 API 제공, 클라이언트는 사용자 인증이나 컨텍스트(세션, 로그인 정보)등을 직접 관리하는 구조로 역할이 분리되어 개발해야 할 내용이 명확해지고 서로 간 의존성이 감소합니다

 

REST의 구성 요소

자원 : URI

- 모든 자원에 고유한 ID가 존재하고 이 자원은 Server에 존재한다

- 자원을 구별하는 ID는 HTTP URI입니다

- Client는 URI를 이용해서 자원을 지정하고 해당 자원의 상태에 대한 조작을 Server에 요청합니다

 

행위 : HTTP Method

- HTTP 프로토콜의 Method를 사용한다

- HTTP 프로토콜의 GET, POST, PUT, DELETE와 같은 메서드를 제공한다

 

표현 

- REST에서 하나의 자원은 JSON, XML, TEXT, RSS 등 여러 형태의 응답으로 나타내어질 수 있다

- 보통은 JSON, XML를 통해 데이터를 통신한다

 

REST API 디자인 가이드

GET /members/delete/1 - bad

DELETE /members/1     - good

uri는 자원을 표현하는 것에만 중점을 둡니다

delete와 같은 행위에 대한 표현은 HTTP 메서드를 이용합니다

 

추가 예제)

 

1번 회원정보를 가져오는 URI

GET /members/get/1    - bad

GET /members/1        - good

 

회원을 추가할 때

GET  /members/insert/2   - bad 

POST /members            - good

get메서드는 리소스 생성에 맞지 않습니다

 

POST : 리소스를 생성합니다

GET : 리소스를 조회합니다

PUT : 리소스를 수정합니다

DELETE : 리소스를 삭제합니다

 

 

 

 

 

 

참고용 응답 상태 코드

 

1xx : 전송 프로토콜 수준의 정보 교환

2xx : 클라이언트 요청이 성공적으로 수행됨

3xx : 클라이언트는 요청을 완료하기 위해 추가적인 행동을 취해야 함

4xx : 클라이언트의 잘못된 요청

5xx : 서버쪽 오류로 인한 상태코드

728x90

'Programming > 기본기' 카테고리의 다른 글

테스트 코드 작성 규칙  (0) 2021.09.29
테스트 코드의 중요성  (0) 2021.09.29
알고리즘 Stack, Queue, Deque, Heap  (0) 2021.02.07
메모리 구조 Code, Data, Stack, Heap  (0) 2021.02.07
프로세스와 쓰레드의 차이  (0) 2021.02.04

댓글