Spring

[Spring]REST API란 무엇일까?

siyuning 2022. 7. 29. 16:49

스프링부트를 공부하면서 REST API에 대해 궁금한 것이 많아서 정리해보았다.

먼저 REST에 대해 알아본 후, REST API에 대해 알아보자 !

🧐REST API(Representational State Transfer API)

  • REST를 기반으로 만들어진 API를 의미한다.

💡REST(Representational State Transfer)란?

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

1) HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고

2) HTTP Method(POST, GET, PUT, DELETE)를 통해

3) 해당 자원(URI)에 대한 CRUD Operation을 적용하는 것

📎CRUD Operation은?

  • CRUD는 소프트웨어의 기본적인 데이터 처리 기능인 Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 묶어서 일컫는 말이다.

📎CRUD 기능 & 메서드

  • HTTP에는 여러가지 메서드가 있는데, REST 서비스에서는 CRUD에 해당하는 4개의 메서드를 사용한다. REST API에서 이 4개의 메서드를 이용하여 리소스에 대한 행위를 정의한다.
HTTP메서드 의미 역할
POST Create  리소스를 생성
GET Read  해당 URI의 리소스를 조회
PUT Update  해당 URI의 리소스를 수정
DELETE Delete  해당 URI의 리소스를 삭제

🌟REST를 한마디로 정의하면?

  • 잘 표현된 HTTP URI로 리소스를 정의하고 HTTP메서드로 리소스에 대한 행위를 정의한다. 리소스는 JSON, XML과 같은 여러가지 언어로 표현할 수 있다.
    REST의 특징을 지키는 API를 RESTful하다 라고 표현하기도 한다.

💡REST API(Representational State Transfer API)란?

  • REST의 원리를 따르는 API를 의미한다.

📎리소스

  • 서비스를 제공하는 시스템의 자원을 의미하는 것으로 URI(Uniform Resource Identifier)로 정의된다. 즉, REST API의 URI는 리소스의 자원을 표현해야만 한다.

📎REST API의 URI를 설계할 때 다음과 같은 규칙을 적용한다.

1) URI는 명사를 사용한다.

ex) 회원 목록 조회하는 REST API를 표현하면 ⇒ GET /members
GET은 HTTP메서드로 URI의 리소스를 조회하는 것을 의미한다. members라는 명사를 통해 회원목록임을 알 수 있다. 이처럼 직관적으로 그 의미를 이해할 수 있는 URI를 잘 표현된 URI라고 한다.

 

2) 슬래시(/)로 계층 관계를 나타낸다.

ex) 강아지라는 목록에는 비숑, 푸들, 사모예드 같은 종이 있다. 따라서 강아지와 비숑의 계층 관계를 나타내면 ⇒ GET /dogs/Bichon

 

3) URI의 마지막에는 슬래시를 사용하지 않는다.

실행하는 데는 문제가 없지만, 다음 계층이 있는 것으로 오해할 수 있다.

 

4) URI는 소문자로만 작성한다.

대소문자를 섞어 사용하면 URI를 기억하기 어렵고 URI를 호출할 때 잘못 쓰기 쉽다. 일반적으로 URI에 대문자는 잘 사용하지 않는다.

 

5) 가독성을 높이기 위해 하이픈(-)을 사용할 수 있다. 밑줄(_)은 사용하지 않는다.


💡RESTFUL이란?

  • REST의 원리를 따르는 시스템을 의미한다. 하지만 REST를 사용했다 하여 모두가 RESTful 한 것은 아니다. REST API의 설계 규칙을 올바르게 지킨 시스템을 RESTful하다 말할 수 있다.
  • 모든 CRUD 기능을 POST로 처리 하는 API 혹은 URI 규칙을 올바르게 지키지 않은 API는 REST API의 설계 규칙을 올바르게 지키지 못한 시스템은 REST API를 사용하였지만 RESTful 하지 못한 시스템이라고 할 수 있다.

 

 

[참조]

스프링부트 시작하기(김인우 지음)

https://khj93.tistory.com/entry/네트워크-REST-API란-REST-RESTful이란