REST API

지송현·2023년 1월 17일
0

개발 일반

목록 보기
5/5

1. REST API란?

REST API란 REST하게 API를 서술하는 방법을 부르는 용어이다. 그렇다면 REST 하다는 것은 어떤 의미일까.

RSET는 Representational State Transfer의 약자이다. 단어 하나하나를 풀어보면, 상태(State)를 전달(Transfer)하는 것을 나타내는(Representation) 방법이다. “자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 것”을 의미한다.

2. 구성

REST API는 아래의 구성으로 이루어져 있다.

  • 자원(Rsource) - URI
  • 행위(Verb) - HTTP METHOD
  • 표현(Representations)

3. REST의 특징

3-1 Uniform(유니폼 인터페이스)

REST는 API를 설계할 때 자원을 중심으로 만드는 것이 원칙이다. 따라서 URI 자원으로 한정된 일관적인 인터페이스(Uniform interface)를 구현하는 것으로 자원 조작을 통일하는 것이 좋다.

3-2 Stateless(무상태성)

REST는 무상태성 성격을 갖는다. 작업 상태를 위한 정보를 저장하지 않고 관리하지 않는다. 이로 인해 서비스의 자유도가 높아지고, 서버에서 불필요한 정보를 관리하지 않아 서비스 구현이 단순해질 수 있다.

서버가 세션 정보, 쿠키 정보 등을 저장하거나 관리하지 않기 때문에 클라이언트에서 상태 정보를 항상 전송해야 한다. 이에 따라 통신 비용이 높아지는 단점이 있다.

3-3 Cacheable(캐시 가능)

위 stateless의 단점을 해결하기 위한 정책이다. 클라이언트의 요청에 대한 응답을 따로 저장함으로써 추후에 재사용할 수 있게 한다.

ex)

//요청
GET /ex/list/1
//응답
200 ok

//요청2
GET /ex/list/1
//응답
304 Not Modified

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

그 자체로 api의 목적이 쉽게 이해가 된다.

ex)

내용RESTful API
user들의 정보를 getGET http://localhost:8000/users

api만 보면 localhost:8000에서 유저에 대한 정보를 get해오라는 것을 알 수 있다.

3-5 Client-Server 구조

클라이언트와 서버를 분리한 것을 의미한다. 서버는 api를 제공하기만 하고, 클라이언트는 세션, 쿠키 등의 데이터를 직접 관리한다.

프런트와 백의 구분이 명확하지 않았던 과거에 비해 현재는 클라이언트와 서버를 확실히 분리해 독립적인 개발이 가능해졌다.

3-6 Layered 구조

REST 서버는 다중 계층으로 구성될 수 있어 보안, 로드 밸런싱, 암호화 계층을 추가해 구조상의 유연성을 둘 수 있다. 또한 proxy, 게이트웨이 같은 네트워크 기반의 중간매체를 사용할 수 있다.


4. 디자인 방법

REST API 설계 시에 가장 중요한 것은 다음 2가지로 볼 수 있다.

  1. URI는 정보의 자원을 표현해야 한다.
  2. 자원에 대한 행위는 HTTP METHOD로 표현해야 한다.

즉 '무엇을 가지고 어떻게 할 것인가'에서 '무엇'을 URI에, '어떻게'를 'HTTP METHOD'를 통해 표현하면 된다.

ex) 회원 정보를 가져올 때 :

GET /members/show/1     (x)
GET /members/1          (o)

주의점

1. 슬래시 구분자(/)는 계층 관계를 나타내는 데 사용

 http://localhost:8000/products/cloths

2. uri 마지막에 /를 쓰지 않는다

3. 가독성을 높이기 위해 하이픈(-) 사용

띄어쓰기 등을 해야 할 때 - 사용한다. 밑줄( _ )은 사용하지 않는다.

4. 소문자 사용

uri 경로에 대문자 사용은 피해야 한다. 대소문자 구분을 하기 때문에 서로 다른 리소스로 인식하기 때문이다.

5. 파일 확장자는 uri에 포함하지 않는다

profile
백엔드 개발자

0개의 댓글