REST API란 무엇인가? 왜 사용하는가?

minjjai·2022년 11월 14일
1
post-custom-banner

개요

이번 멋북스 개인 프로젝트에서는 서비스가 ebook market과 reader로 나뉜다. market앱은 spring boot로 프론트와 백을 모두 구현하지만, reader앱은 리엑트코드로 작성되어 있는 프론트에 REST API를 만들어 연결하는 것이다.

난 REST API에 대해서 잘 모른다. 그냥 url이 명사이어야 한다? 그낭 겉핧기 수준으로 알고 있어 이에 대한 이해가 필요하다 싶어 공부하고, 그것을 이 기록에 남기려 한다.

REST API란?

두 개의 컴퓨터가 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스

REST?

  • Representational State Transfer
    REST는 API 작동 방식에 대해 조건을 부과하는 소프트웨어 아키텍처이다. 처음 REST는 인터넷 같은 복잡한 네트워크에서 통신을 관리하기 위한 지침으로 만들어졌다. REST기반 아키텍처를 사용하면 대규모의 고성능 통신을 안정적으로 지원할 수 있다.또한 쉽게 구현하고 수정할 수 있다.

API?

  • Application Programming Interface
    다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙

REST한 API를 REST API, RESTful API라고 부른다.

REST의 구성

  • 자원(resource) - URI
    서버에 존재하는 데이터의 총칭
    모든 자원은 고유의 URI(URL)을 가지며 클라이언트는 이 URI를 지정하여 해당 자원에 대해 CRUD 명령을 수행할 수 있다.
  • 행위(verb) - HTTP method
    클라이언트가 HTTP Method(GET, POST, PUT, DELETE)를 이용하여 자원을 조작하는 것
  • 표현(Representations)
    서버의 행위(verb)에 대한 응답(Json, XML)

REST API의 사용 이유 / 장점

REST API의 사용 이유에는 많은 것들이 있겠지만, 내가 보고 정리한 것들을 기록하겠다.

쉬운 사용성

REST API의 메시지를 읽는 것 만으로 메시지의 의도를 확실히 파악할 수 있다.(가독성 good)
또한 HTTP의 인프라를 그대로 사용하기 때문에 api사용을 위한 별도의 인프라 구축이 필요하지 않다.

클라이언트와 서버의 완전한 분리

클라이언트와 서버는 REST api를 이용해 정보를 주고 받는다. stateless한 특징에 따라 서버는 클라이언트의 히스토리, 문맥을 유지할 필요가 없게 된다. 명확하게 표현하자면, 각자의 역할이 명확하게 나뉘어져 있다고 보면 된다.
이러한 점은 개발자의 업무량 감소 뿐만 아니라 플랫폼의 독립성 확장이라는 효과를 가져올 수 있다.

HTTP 프로토콜 서비스라는 요구만 충족이 된다면 더 다양한 플랫폼에서 원하는 서비스를 쉽고 빠르게 개발하고 배포를 할 수 있다.

특정한 데이터의 명확한 표현

REST API는 헤더 부분에 uri처리 메서드를 명시한다. 이러써 필요한 데이터를 바디에 표현할 수 있다. 이는 특정 메서드의 세부 표현을 다양한 언어(json, xml)로 작성할 수 있는 장점이 있고, 헤더 표현의 가독성 향상이라는 효과도 가져다 준다.

단점

단점은 간략히 표현하도록 하겠다.
1. HTTP 메서드를 사용해 uri를 표현하기 때문에 다양한 인프라에서 사용이 가능하지만, 메서드 형태가 제한적이라는 단점도 함께 가지고 있다.
2. 표준이 존재하지 않는다.

HTTP method

GET

  • 리소스(자원 혹은 정보)를 조회

POST

  • 리소스 생성

PUT

  • 리소스 변경(리소스의 전체에 변경이 있을 때)

PATCH

  • 리소스 변경(리소스의 일부에 변경이 있을 때)

DELETE

  • 리소스 제거, 삭제
profile
BackEnd Developer
post-custom-banner

0개의 댓글