[CS] REST? REST API?

sicksong·2021년 12월 27일
0
post-thumbnail

프로그래밍 공부를 시작하다면 RESTful하다 REST에 맞는 API를 만들어야 한다는 등의 이야기를 여기저기서 듣고 보게 된다. 당연히 채용공고에도 많이 보..

그게 뭐냐 대체!

정리해보겠다
일단,

API란 무엇일까

  • API란 Application Programming Interface의 약자이다.
  • 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스

REST ?

  • REST란 REpresentaional State Transfer의 약자

  • 웹(HTTP) 설계의 우수성에 비해 제대로 사용되지 못하던 상황에 웹의 장점을 최대한 활용할 수 있게 하기 위해 만들어진 아키텍처

  • 웹에 존재하는 모든 자원(이미지, 동영상, DB자원 등)에 고유한 URI를 부여해 활용하는 것으로, 자원을 정의하고 자원에 대한 주소를 지정하는 방법론을 의미

  • 이러한 REST의 형식을 따른 시스템을 RESTful이라고 부른다

  • http URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST,GET,PUT,DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미

  • 자원기반의 구조(ROA: Resource Oriented Architecture) 설계의 중심에 Resource가 있고 HTTP Method를 통해 리소스를 처리하도록 설계된 아키텍처

    REST 구성

    • 자원(Resource) - URI(https://velog.io(URL)/write?id~(URI)) *URL안에 URI가 포함
    • 행위(Verb) - HTTP method(POST,GET,PUT,DELETE)
    • 표현(Representations)
  • 특징

    • Uniform Interface(유니폼 인터페이스): HTTP 표준만 따른다면 어떤 언어 혹은 어떤 플랫폼에서 사용하여도 사용이 가능한 인터페이스 스타일
    • Stateless(상태 정보 유지 안함): 서버는 각각의 요청을 완전히 다른것으로 인식하고 처리
    • Cacheable(캐시 가능): HTTP의 기존 웹 표준을 그대로 사용하기 때문에 HTTP가 가진 캐싱 기능 적용
    • Self-descriptiveness(자체 표현 구조): REST API 메세지만 보고도 쉽게 이해할수 있는 구조
    • Client-Server: 자원이 있는 쪽은 server, 자원을 요청하는 쪽은 Client
    • Layerd System(계층화): 클라이언트는 REST API 서버만 호출

RESTful의 의미가 대체 뭘까

RESTful 하다는 것은 REST API 설계 가이드를 준수하며 만들었다는 것이다.

RESTAPI 설계가이드

  • 리소스에 대한 행위는 HTTP Method(POST,GET,PUT,DELETE)로 표현
  • /(슬래시)는 계층 관계를 나타낼때 사용한다
  • URI에 명사 사용
  • URI 마지막 문자에 /(슬래시)를 사용하지 않는다.

그렇다면 왜 RESTful API를 애용할까?

  • RESTful API 자체만으로도 API의 목적을 빠르고 명확하게 할 수 있기 때문에 사용한다.
profile
세상을 선명하게

0개의 댓글