우연치않게 REST API에 대해 알아보게 되었다.

정리 할 겸 포스팅을 해본다.

 

REST API에 대해 알아보기 전 REST란 무엇인가를 살펴보자.

 

 

REST

 

REST : "Represantational State Transfer"의 약자.

자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 모든 것을 의마한다.

 

즉, *HTTP URI을 통해 자원(Resource)을 명시하고

HTTP Method(GET,POST,PUT,DELETE)를 통해 해당 자원의 CRUD Operation을 적용하는 것을 뜻한다.

(*HTTP : 클라이언트와 서버 간의 통신을 위한 프로토콜. 통신 규약)

 

여기서의 CRUD Operation은 컴퓨터 소프트웨어의 기본적인 데이터 처리 기능을 말한다.

1. CREATE : 데이터 생성(POST)

2. READ : 데이터 조회(GET)

3. UPDATE : 데이터 수정(PUT)

4. DELETE : 데이터 삭제(DELETE)

 

 

 


REST 구성 요소

 

1. 자원(Resource) : URI

  • 모든 자원에는 고유한 ID가 존재하고 이 자원은 Server에 존재한다.
  • 자원을 구별하는 ID는 [ex) '/board/{board.no}'] 와 같은 HTTP URI이다.
  • Client는 URI를 이용하여 자원을 지정하고 해당 자원에 대한 조작은 설정한 URI를 통해 Server에 요청한다

 

2. 행위(Verb) : HTTP Method

  • HTTP 프로토콜의 Method(GET,POST,PUT,DELETE)를 이용한다. 

 

3. 표현(Representation)

  • Client가 자원에 대해 조작 요청을 하면 Server는 이에 적정한 응답을 보낸다.
  • 자원은 JSON, XML, TEXT, RSS 등 여러 형태의 응답으로 나타낼 수 있다. (JSON을 많이 쓴다고 한다.)

REST 특징 

 

1. Server - Client 구조를 가진다.

  • 자원이 있는 쪽을 Server, 자원을 요청하는 쪽을 Client  
    • Server : API를 제공하고 비즈니스 로직 처리 및 저장을 담당한다.
    • Client : 사용자 인증, 세션, 로그인 정보 등을 담당한다.

 

2. 무상태성(Stateless)

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

 

3. 캐시 가능(Cacheable)

  • HTTP라는 기존 웹 표준을 사용하기 때문에 웹에서 사용하는 기존 인프라를 활용할 수 있고 이에 따라 HTTP가 가진 캐싱 기능을 적용할 수 있다.

 

4. 자체 표현 구조(Self-descriptiveness)

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

REST API

 

위의 REST의 원리를 기반으로 만들어진 API를 REST API라고 한다.

 

그럼 이 REST API를 설계하는 방법에 대해 알아보자.

 

REST API 설계 규칙

1. URI는 정보의 자원을 표시해야 한다.

  • 동사보다 명사를 , 대문자보단 소문자를 사용해야한다. Ex) /Board -> /board

 

2. URI 마지막 문자에 / 는 사용하지 않는다.

  • Ex) /board/ -> /board

 

3. 자원에 대한 행위는 HTTP Method로 표현한다.

  • Ex) /board/write -> POST /board    
  • Ex) /board/list -> GET /board
  • Ex) /board/info?no=1 -> GET board/1

 

4. 언더바(_)보단 하이픈(-)을 사용한다.

  • Ex) /test_page -> /test-page

 

5. CRUD를 나타대는 동사는 URI에 사용되면 안된다.

  • Ex) /board/delete?no=1 -> DELETE /board/1

 

 

게시판 REST API 설계 예시)

목적 HTTP Method URI
게시물 리스트 조회 GET /board
게시물 상세보기 GET /board/{no}
게시물 작성 POST /board
게시물 수정 PUT /board/{no}
게시물 삭제 DELETE /board/{no}

 

 

+ Recent posts