WEB - REST API / RESTful API

Yuni·2023년 3월 23일
0

WEB

목록 보기
1/12
post-thumbnail

REST(Representational State Transfer): 로이 필딩(Roy Fielding)의 2000년 박사학위 논문에서 소개된 용어로 "웹에 존재하는 모든 자원(이미지, 동영상, DB 자원)에 고유한 URI를 부여해 활용"하는 것으로, 자원을 정의하고 자원에 대한 주소를 지정하는 방법론을 의미합니다.

API

Application Programming Interface의 약자로 서비스나 프로그램 간에 미리 정해진 기능을 실행할 수 있도록하는 규약으로 운영체제 API, 프로그램 API, 웹 API 등이 있습니다.

그림 출처: https://dev-to-uploads.s3.amazonaws.com/i/ekawmj3rafdtn06hzj79.png

구성

  1. 자원 - URI : API에서 제공하는 데이터나 서비스에 대한 정보를 나타내며 모든 자원은 고유한 ID를 가지고 서버에 존재합니다. 고유ID로 자원을 구별하는데 이 ID가 바로 URI입니다. 클라이언트는 URI를 이용해 자원에 대한 주소를 지정하고 상태(정보)에 대한 조작을 서버에 요청합니다.
  2. 행위 - HTTP METHOD : 자원의 대한 행위를 정의하는 HTTP 메소드입니다. 일반적으로 GET, POST, PUT, DELETE 를 사용합니다.
  3. 표현 - HTTP Message Pay Load : 클라이언트가 자원의 상태에 대한 조작을 요청하면 서버에서는 이에 대응하는 응답을 보냅니다. 대부분의 REST API에서는 JSON, XML 등의 형식으로 자원을 표현합니다.

REST 의 주요 목표

  1. 구성 요소 상호작용의 규모 확장성(scalability of component interactions)

  2. 인터페이스의 범용성 (Generality of interfaces)

  3. 구성 요소의 독립적인 배포(Independent deployment of components)

  4. 중간적 구성요소를 이용해 응답 지연 감소, 보안을 강화, 레거시 시스템을 인캡슐
    레이션 (Intermediary components to reduce latency, enforce security and encapsulate legacy systems)


REST 아키텍처 특징

  1. 클라이언트/서버 구조
    자원을 보관하는 곳: 서버 vs 자원을 요청하는 곳: 클라이언트
    서버와 클라이언트는 일관적인 인터페이스로 분리되어야 합니다.

  2. 무상태(Stateless)
    각 요청 간 클라이언트의 컨텍스트를 서버에 저장하지 않아야 합니다. API서버는 들어오는 요청만 메시지로 처리하면 되는데 이의 장점은 세션과 같은 컨텍스트 정보를 신경쓰지 않아도 되어 구현이 단순해진다는 점입니다.

  3. 캐시 처리 가능(Cacheable)
    HTTP 프로토콜을 사용하므로, 웹에서 사용하는 기존의 기능을 사용할수 있어 캐싱이 가능하다. 캐시를 잘 사용하게 되면 네트워크 응답시간 뿐 아니라 REST 서버 트랜잭션이 발생하지 않아 전체적인 응답시간, 성능, 서버의 자원 이용률까지 향상시킬 수 있습니다.

  4. 계층화(Layered System)
    클라이언트는 REST API 서버만 호출할 수 있고 REST 서버는 다중 계층으로 구성될 수 있어 보안, 로드 밸런싱, 암호화, 사용자 인증 등을 추가해 구조를 유연하게 만들 수 있습니다. 또한 게이트웨이나 PROXY 같은 네트워크 기반의 중간 매체를 사용할 수도 있습니다.

  5. 자체 표현 구조(Self-descriptiveness)
    REST의 또 다른 큰 특징 중 하나는 REST API 메시지만 보고도 이를 쉽게 이해할 수 있는 자체 표현 구조를 갖는다는 것입니다.

  6. 인터페이스 일관성(Uniform Interface)
    REST는 HTTP 표준에만 따른 다면, 특정 언어나 기술에 종속되지 않고 모든 플랫폼에서 사용할 수 있습니다.


RESTful API 설계 가이드

  1. URI는 정보의 자원을 표현해야 하며 동사보다는 복수형 명사(단수일 경우 복수형명사+아이디)를 사용합니다.
  2. 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE 등)으로 표현하며, URL에 포함시키지 않습니다.

URI 설계시 주의할 점

  1. 슬래시 구분자(/)는 계층 관계를 표현할 때 사용합니다.
  2. URI 마지막 문자로 슬래시(/)를 포함하지 않습니다.
  3. 하이픈(-)은 URI 가독성을 높이는데 사용합니다.
  4. 밑줄(_)은 URI에 사용하지 않는다.
  5. URI 경로에는 소문자만 사용합니다.
  6. 파일확장자는 URI에 포함하지 않습니다.

RESTful API?!

REST 특징을 잘 지켜 설계된 API를 의미합니다.
HTTP 통신에서 어떤 자원에 대한 CRUD(Create, Read, Update, Delete) 요청을 Resource와 Method로 표현하여 특정한 형태로 전달할지 정해주는 가이드라인이라고도 할 수 있겠습니다.




참고사이트
brainbackdoor.tistory.com/53
ko.wikipedia.org/wiki/REST
https://velog.io/@somfist/REST%EB%9E%80-REST-API-RESTful-API%EC%B0%A8%EC%9D%B4%EC%A0%90
https://bcho.tistory.com/953

profile
Look at art, make art, show art and be art. So does as code.

0개의 댓글