[네트워킹] REST API

Chloe Choi·2021년 3월 23일
0

네트워킹

목록 보기
8/11

배경

웹 설계의 우수성에 비해 제대로 사용되어지지 못하는 모습에 안타까워하며 웹의 장점을 최대한 활용할 수 있는 Architecture로써 REST를 발표

REST API


웹에 존재하는 모든 자원에 고유한 URI를 부여해 활용하는 분산 하이퍼미디어시스템을 위한 sw 아키텍처의 한 형식

즉, Resource가 있고 HTTP Method를 통해 Resource를 처리하도록 설계된 아키텍쳐 (리소스 지향 아키텍처)

구성

  • Resource: URI
  • Method: HTTP Method
  • Message(Presentations): REST에서 하나의 자원은 JSON, XML, TEXT 등 여러 형태의 presentation으로 나타남
HTTP POST , http://www.dongguk.edu/users/ 👉 리소스: URI로 표현
{  
   "users":{  
      "name":"chloe" 👉 메세지: 디테일한 내용
   }
}

메서드
HTTP 메서드를 사용(CRDU에 해당하는 POST, GET, DELETE, PUT 사용)

특성

  • 유니폼 인터페이스(Uniform Interface)
    HTTP Protocol 표준을 따라 안드로이드, iOS 플랫폰이든, 특정 언어나 기술에 종속되지 않고 모든 플랫폼에 사용가능(모든 플랫폼에 사용 가능한 느슨한 결합 구조)하며 URI로 지정한 리소스에 대한 조작이 가능한 아키텍처 스타일

  • 무상태성(Stateless)
    HTTP 위에 구현되어 HTTP와 같이, 사용자나 클라이언트의 컨택스트를 서버쪽에 유지 하지 않음. API 서버는 들어오는 요청만 단순 처리하면 됨 -> 구현 단순

  • Cacheable
    HTTP 위에 구현되어 웹에서 사용하는 기존의 인프라를 그대로 활용 가능

    사용방법
    HTTP GET을 "Last-Modified”와 같이 보냄
    -> 304 Not Modified을 리턴하면 클라이언트는 자체 캐쉬에 저장된 값을 사용하게 됨

  • 자체 표현 구조(Self-descriptiveness)
    Method + URI로 이루어져 직관적으로 이해 가능한 구조

  • 클라이언트 서버 구조 (Client-Server 구조)
    REST 서버: API 제공 / 클라이언트: 사용자인증, 컨택스트 관리
    -> 각 역할이 확실히 구분되어 서로의 개발에 있어서 의존성이 줄어듦

장점

  • 단순하게 메세지 표현가능
  • 확장에 유연
  • 서버/클라를 독립적으로 구현
  • HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용 가능

단점

  • RESTful API는 URI를 사용함. 근데 어떤 요청들은 그 경로로만 설명하기가 어려움
    👉 URI path, 쿼리 매개변수, 요청 바디 조합으로 구성해야함
  • HTTP의 GET, POST, PUT, DELETE 메소드만 사용함. 이것 만으로는 설명하기 힘든 것들이 있음

정리

  1. 어떤 다른 모듈, 앱이더라도 상호간에 통신 가능
  2. 멀티플랫폼 지원

RESTful?

RESTful system이란, 위 REST 아키텍쳐의 특징을 따르것을 말함

+) retrofit2

안드로이드에서 통신 시 자주 사용하는 라이브러리다. 이는 Java, Android용 REST 클라이언트다. 이 라이브러리를 사용하면 REST 기반 웹 서비스를 통해 비교적 쉽게 JSON을 검색하고 업로드할 수 있다. 내부적으로는 데이터 직렬화를 통해 변환을하고 OkHttp 라이브러리를 통해 HTTP 처리를 한다!

profile
똑딱똑딱

0개의 댓글