개발 상식

RESTful API란?

nuyhus 2023. 12. 8. 23:46

REST란?

Representational State Transfer의 약자
자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미

REST의 구체적인 개념

  1. HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고,
  2. HTTP Method(POST, GET, PUT, DELETE, PATCH 등)를 통해
  3. 해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미한다

REST 구성 요소

  • 자원(Resource) : URI
  • 행위(Verb) : HTTP Method
  • 표현(Representation of Resource) (응답)
    • Client가 자원의 상태에 대한 조작을 요청하면 Server는 이에 적절한 응답(Representation)을 보낸다.
    • REST에서 하나의 자원은 JSON, XML, TEXT, RSS 등 여러 형태의 Representation으로 나타난다.

REST의 특징

  1. Server-Client(서버-클라이언트 구조)
    : Resource가 있는 쪽을 Server, resource를 요청하는 쪽을 Client라고 부른다.
  2. Stateless(무상태)
    : HTTP 프로토콜은 무상태 프로토콜이므로, 그를 사용하는 REST API 역시 무상태성을 가진다.
  3. Cacheable(캐시 처리 가능)
    : HTTP 프로토콜을 사용하므로, 웹에서 사용하는 기존의 기능을 사용할 수 있다.
  4. Layered System(계층화)
    : Client는 REST API Server만 호출한다. REST Server는 다중 계층으로 구성될 수 있다.
  5. Uniform Interface(인터페이스 일관성)
    : URI로 지정한 Resource에 대한 조작을 통일되고 한정적인 인터페이스로 수행한다.
  6. Self-Descriptiveness (자체 표현)
    : 요청 메시지만 보고도 쉽게 이해할 수 있는 자체 표현 구조로 되어있다.

REST의 장단점

장점

  • HTTP 프로토콜의 인프라를 그대로 사용하므로 REST API 사용을 위한 별도의 인프라를 구축할 필요가 없다.
  • HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하다.
  • Hypermedia API의 기본을 충실히 지키면서 범용성을 보장한다.
  • REST API 메시지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 쉽게 파악할 수 있다.
  • 여러 가지 서비스 디자인에서 생길 수 있는 문제를 최소화 한다.
  • 서버와 클라이언트의 역할을 명확하게 분리한다.

단점

  • 표준자체가 존재하지 않아 정의가 필요하다.
  • HTTP 메소드 형태가 제한적이다.
  • 구형 브라우저에서는 호환이 되지 않는다.(익스플로러)

REST API란?

REST 기반으로 서비스 API를 구현한 것
URI는 정보의 자원만 표현해야 하며, 자원의 행위는 HTTP Method에 명시한다는 것

REST API 특징

각 요청이 어떤 동작이나 정보를 위한 것인지를 그 요청의 모습 그 자체로 추론이 가능하다

REST API 설계 규칙

  • URI는 정보의 자원을 표현해야한다.
  • 자원에 대한 행위는 HTTP Method(Get, Put, Post, Delete 등)로 표현한다.
  • URI는 동사보다는 명사를, 대문자보다는 소문자를 사용한다.
  • 슬래시 구분자는 계층 관계를 나타내는데 사용한다. (ex. '/groups/group_id')
  • URI의 마지막 문자로 슬래시를 포함하지 않는다.
  • 하이픈(-)은 URI 가독성을 높이는데 사용한다.
  • 밑줄(_)은 URI에 사용하지 않는다.
  • 파일 확장자는 URI에 포함하지 않는다.

RESTful

RESTful : REST의 원리를 잘 따른다는 의미
RESTful API : REST의 설계 규칙을 잘 지켜서 설계된 API

면접 예상 질문

  1. REST란 무엇입니까?
  2. REST API란 무엇입니까?
  3. RESTful API에 대해 설명해주세요

참고 URL

https://khj93.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-REST-API%EB%9E%80-REST-RESTful%EC%9D%B4%EB%9E%80

https://appmaster.io/ko/blog/rest-apiran-mueosimyeo-dareun-yuhyeonggwa-eoddeohge-dareungayo

https://dev-coco.tistory.com/97

https://mfamcs.netlify.app/docs/dev_knowledge/RESTful%20API%EB%9E%80#rest-api%EB%9E%80

'개발 상식' 카테고리의 다른 글

SOLID 원칙  (0) 2023.11.19
객체 지향 프로그래밍  (0) 2023.11.17