미누에요

REST , REST API, RESTful API 본문

개발이야기

REST , REST API, RESTful API

미누라니까요 2025. 5. 6. 19:20
728x90
반응형
SMALL

개발을 하다보면 REST API라는 용어를 많이 보게 된다.

나도 이때까지 무슨 API인지 제대로 모르고 있었는데, 이번 기회에 정리해보고자 한다.

 

 

REST가 뭔가 ?

REST(Representational State Transfer)는 자원을 이름으로 구분하고, 해당 자원을 주고받는 것을 의미한다.

여기서 자원은 그림, 이미지, 텍스트 등을 의미하고, 그 자원의 이름으로 해당 자원을 표현하게 된다.

  • 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 개발 아키텍처의 한 형식
  • 기본적으로 웹과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대로 활용할 수 있음
  • 모든 자원에 고유한 URI 가 등록됨

 

REST 의 구성 요소

  • 자원(Resources) : 각 자원들은 고유한 HTTP URI를 가지고 있으며, 해당 URI를 의미한다.
    • Client는 해당 URI로 자원에 대한 조작을 요청한다.
  • 행위(Verb) : HTTP Method
    • GET, POST, PUT, DELETE 가 존재한다.
  • 표현(Representation of Resource)
    • Client에서 요청하면 서버가 응답을 줘야하는데, 응답을 어떤 형태로 주는지에 대한 내용이다.
    • 주로 JSON, XML을 사용한다. (요즘은 거의 다 JSON 사용)

 

 

REST API가 뭐냐 ?

REST API는 REST를 만족시키는 방식으로 설계된 API이다.

  • API : 데이터를 사용하기 위해 서버 측에서 제공하는 인터페이스, 은행 직원 같은 개념이다.

 

REST API 설계 규칙

  • URI는 정보의 자원을 표현해야 한다.
    • resource는 동사보다는 명사를, 대문자보다는 소문자를 사용한다.
    • resource의 도큐먼트 이름으로는 단수 명사를 사용해야 한다.
    • resource의 컬렉션 이름으로는 복수 명사를 사용해야 한다.
    • resource의 스토어 이름으로는 복수 명사를 사용해야 한다.
      • Ex) GET /Member/1 -> GET /members/1
  • 자원에 대한 행위는 HTTP Method(GET, PUT, POST, DELETE 등)로 표현한다.
    • URI에 HTTP Method가 들어가면 안된다.
      • Ex) GET /members/delete/1 -> DELETE /members/1
    • URI에 행위에 대한 동사 표현이 들어가면 안된다.(즉, CRUD 기능을 나타내는 것은 URI에 사용하지 않는다.)
      • Ex) GET /members/show/1 -> GET /members/1
      • Ex) GET /members/insert/2 -> POST /members/2
    • 경로 부분 중 변하는 부분은 유일한 값으로 대체한다.(즉, :id는 하나의 특정 resource를 나타내는 고유값이다.)
      • Ex) student를 생성하는 route: POST /students
      • Ex) id=12인 student를 삭제하는 route: DELETE /students/12

 

RESTful API는 또 뭐냐 ??

REST API의 설계 원칙에 맞게 API를 작성한 경우, 그 API를 RESTful하다고 표현할 수 있다.

공식적인 표현이 아니라, 사람들이 흔히 사용하는 표현이라고 생각해두자.

 

또한, 모든 API가 RESTful한 API는 아니라는 것도 알아두자!

 

참고 자료 : https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html#google_vignette

 

[Network] REST란? REST API란? RESTful이란? - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

 

728x90
반응형
LIST