본문 바로가기

Web Sever 개발과 CS 기초/자바

REST 특징과 REST API 설계 규칙

REST, API 그리고 REST API의 개념에 대한 이해는 아래 글에서 확인할 수 있다. 

https://coding-business.tistory.com/13

 

REST API, RESTFUL이란

Overview 이번 글의 목표는 REST API에 대한 이해이다. REST API를 이해하기 위해서는 먼저 REST와 API에 대한 이해가 필요하다. 이 두 개념에 먼저 알아본 후에, 두 개념을 합치는 방식으로 REST API에 대해

coding-business.tistory.com

REST의 특징

1. Server - Client (서버 클라이언트 구조)

데이터를 가지고 REST API 제공하는 것이 Server, REST API를 이용하여 데이터를 요청하는 것이 Client이다. 역할을 구분 시켜서, 서로간의 의존성을 줄인다.

2. Stateless(무상태)

HTTP 프로토콜은 Stateless이므로 REST 역시 무상태성을 가진다. 즉 서버가 클라이언트의 상태를 보존하거나 기억하지 않는다.

3. Cacheable(캐시 처리 기능)

HTTP 프로토콜을 그대로 사용하기 때문에, HTTP의 기능인 캐싱 기능을 사용할 수 있다. 자주 사용하는 서버 정보들을 캐시로 저장해두기 때문에 빠른 HTTP 통신 처리가 가능하다.

4. Layered System (계층 구조)

REST 서버는 여러 계층으로 구성되어 있다. 보안을 위해 여러 겹의 서버 계층 구조를 가지기도 한다. 클라이언트 입장에서는 서버의 끝단과 바로 연결 되어 있는지, 중간 프록시 등에 연결되어 있는 지 알 수 없다.

5. Uniform Interface (인터페이스 일관성)

REST 특징을 갖는 서비스는 일관성의 편의를 갖기 위해 일정한 제약을 가지고 있다. 예를 들어 데이터를 요청할 때, URI 같은 걸 통해서 전달되고, 서버는 필요한 데이터를 JSON, XML과 같이 실제 데이터와는 다른 형태로 변경하여 전달한다.

6. Self-Descriptiveness (자체 표현)

요청 메세지만 보고도 어떤 요청인지 쉽게 파악할 수 있는 표현 구조로 되어 있다.

 

REST API 설계 규칙

1. URI는 명사를 이용한다. (데이터 아이디는 동사가 아닌 명사를 사용한다.)

http://school.com/class5/number25/getname (X)

getname → name

2. 슬래시( / )로 계층 관계를 표현한다.

3. URI 마지막 문자로 슬래시 ( / )를 포함하지 않는다.

4. 밑줄( _ )을 사용하지 않고, 하이픈( - )을 사용한다.

5. URI는 소문자로만 구성한다.

6. HTTP 응답 상태 코드 사용한다.

  • 1xx(정보) : 요청을 받았으며 프로세스를 계속 진행합니다.
  • 2xx(성공) : 요청을 성공적으로 받았으며 인식했고 수용하였습니다.
  • 3xx(리다이렉션) : 요청 완료를 위해 추가 작업 조치가 필요합니다.
  • 4xx(클라이언트 오류) : 요청의 문법이 잘못되었거나 요청을 처리할 수 없습니다.
  • 5xx(서버 오류) : 서버가 명백히 유효한 요청에 대한 충족을 실패했습니다.

7. 파일 확장자는 URI에 포함하지 않는다.

http://school.com/class5/number25/photo.jpg(X) 


Reference

https://stitchcoding.tistory.com/21

https://dev-coco.tistory.com/97