REST API

BIGGY_MOM·2024년 9월 19일

REST

Repersentational State Transfer
자원을 이름으로 구분하여 자원의 상태를 주고 받는 것.

자원 : 문서, 사진, 그림, 데이터 등 소프트웨어가 관리하는 모든 것을 HTTP URI로 명시한 것

예전에 있었던 웹서비스 전달 프로토콜인 SOAP는 메시지 송수신 시 헤더와 바디의 인코딩/디코딩 과정이 필수였다고 한다. 그래서 기본 HTTP로 메시지를 전달하면 원하는 기능에 비해 SOAP 프로토콜 처리의 오버헤드가 발생했다. -배보다 배꼽이 크다는 말 같음.

이를 해결하기 위해 새로 만든 구현 기술이 RESTful 웹서비스다.
즉,
HTTP 웹의 장점을 최대한 활용할 수 있는 네트워크 기반 아키텍쳐, 부수적인 레이어나 세션관리를 추가하지 않고도 HTTP 프로토콜로 데이터를 전달하는 프레임 워크다.

<단계>
1. HTTP URI를 통해 자원을 명시
2. HTTP Method(POST, GET, PUT, DELETE, PATCH 등)을 통해
해당 자원(URI)에 대한 CRUD operation을 적용

[출처링크]

REST의 특징

  1. Server-Client(서버-클라이언트 구조)
    • 자원이 있는 쪽이 Server, 자원을 요청하는 쪽이 Client
    • REST server : API를 제공하고 비즈니스 로직 처리 및 저장
    • Client : 사용자 인증이나 context(세션, 로그인 정보) 등을 관리
  2. Stateless (무상태)
    • Client의 context를 Server에 저장하지 X
    • Server는 각각의 요청을 완전히 별개의 것으로 인식
      - 각 API 서버는 Client의 요청만 처리
      - 이전 요청과 다음 요청의 처리에 연관성 X
      - DB에 의해 바뀌는 건 허용
      - Server의 처리 방식에 일관성을 부여하고 부담이 줄어들며 서비스의 자유도가 높아진다.
  3. Cacheable (캐시 처리 가능)
    • 웹 표준 HTTP프로토콜을 그대로 사용하므로 웹에서 사용하는 기존의 인프라를 그대로 사용가능
      - HTTP 프로토콜 표준에서 사용하는 Last-Modified, E-tag를 이용하면 캐싱 구현 가능
    • 대량의 요청에 대한 효율적 처리를 위해 캐시가 사용 : 캐시 사용 시, 응답 시간이 빨라지고 REST Server Transaction이 발생하지 않아 전체 응답시간, 성능, 서버 자원 이용률을 향상시킬 수 있다.
  4. Layered System (계층화)
    • Client는 Rest API Server만 호출
    • Rest Server는 다중 계층으로 구성 가능
      - API Server는 순수 비즈니스 로직을 수행하고 그 앞단에서 보안, 로드밸런싱, 암호화, 사용자 인증 등을 추가하여 구조상의 유연상을 줌
      - 로드밸런싱, 공유 캐시 등을 통해 확장성과 보안성 향상
    • FROXY, 게이트웨이 같은 네트워크 기반의 중간 매체 사용 가능
  5. Uniform Interface (인터페이스 일관성)
    • URI로 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행
    • HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용 가능

REST의 장단점

장점

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

단점

- 자체적인 표준이 존재하지 않아 정의가 필요하다.
- HTTP Method 형태가 제한적이다.
- 브라우저를 통해 테스트할 일이 많은 서비스라면 쉽게 고칠 수 있는 URL보다 Header정보의 값을 처리해야하므로 전문성이 요구된다.
- 구형 브라우저에서 호환이 되지않아 지원해주지 못하는 동작이 많다. 예) 익스플로러

REST API 설계 주의점

  1. URI는 명사, 소문자 사용

    • URI 문법형식(RFC 3986)은 대소문자 구분함
  2. URI 마지막에 슬래시(/) 포함 X

    • 슬래시는 계층 관계를 나타내는데 사용해야함.
  3. 언더바(_) 대신 하이픈(-)

  4. 파일확장자는 URI 포함 X

  5. 행위는 포함하지 X

    API 란 ? 
    Application Programming Interface
    웹 API란 클라이언트와 웹 리소스 사이의 네트워크 통신을 위한 게이트웨이라고 생각하면 됨.
    

RESTful

REST의 원리를 따르는 시스템을 말한다. 하지만 REST API를 사용한 것들 중 REST API 설게 규칙을 올바르게 지킨 시스템만 RESTful하다고 말할 수 있다.

Client에서 Rest API에 요청을 보내는 방식

Path variable

GET /users/10

전체 데이터 또는 특정 하나의 데이터를 다룰 때, 리소스를 식별하기 위해 사용

Query parameter

GET /user?user_id=10

데이터의 좀 더 세부적인 속성을 조정, 세밀한 데이터 정렬, 데이터 필터링을 위해 사용

정보참고
좋은 글 감사합니다
좋은 글 감사합니다

profile
고양이가 밟은 코드

0개의 댓글