TIL

[TIL-56/240416] REST API

prao 2024. 4. 17. 09:00
반응형

REST API

REST

  • 2000년도 로이 필딩의 박사학위 논문에 최초로 소개
  • 웹의 장점을 최대한 활용할 수 있는 아키텍처(설계구조)로 REST 발표
  • REST는 'Representational State Transfer'의 약어
  • HTTP 프로토콜을 사용하여 데이터를 주고 받는 방법
  • HTTP URI를 통해 제어할 자원(Resource)를 명시하고, HTTP Method(GET, POST, PUT, DELETE)을 통해 해당 자원(Resource)를 제어하는 명령을 내리는 방식의 아키텍처

RESTful API

 

REST 구성

  • 자원(Resource; (ex) /boards, /users ...)  → URI(Uniform Resource Identifier)
  • HTTP 메서드 → 작업에 대한 정의(CRUD)
  • 표현(Representation) → Client와 Server 간 자원의 상태를 전달하는 방법으로 JSON, XML 등의 형식 사용

REST 구성

 

API란?

API

  • Application Programming Interface
  • 다른 소프트웨어 어플리케이션에서 사용할 수 있는 기능을 제공하는 인터페이스
  • 어플리케이션 간 데이터를 교환하고 상호 작용하도록 도움을 줌
  • (예: 미세먼지 정보 제공 시스템, 핸드폰 정보 미세먼지 앱)

 

API 유형

Private API

  • 비공개 API
  • 내부 시스템 또는 서비스 간의 통신을 위해 사용되는 API로 외부에 공개되지 않음
  • 주로 기업 내부 시스템에서의 통신을 위해 사용

Public API

  • 공개 API
  • 외부 사용자 혹은 외부 어플리케이션과 상호작용하기 위해 공개된 API
  • 사용에 대한 권한 설정과 비용이 들 수 있음
  • 공공데이터 포털, 기상청, Naver, Kakao, Youtube 등 다양한 API가 존재
  • 대부분 REST 방식으로 작성되어 있음

 

REST API(REST + API)

  • 기존의 전송방식과는 달리 서버는 요청으로 받은 리소스에 대해 순수한 데이터를 전송
  • 기존의 GET/POST 외에 PUT, DELETE 방식을 사용하여 리소스에 대한 CRUD 처리 가능
  • HTTP URI을 통해 제어할 자원(Resource)을 명시하고, HTTP method(GET/POST/PUT/DELETE)를 통해 해당 자원(Resource)를 제어하는 명령을 내리는 방식의 Architecture
  • 표준이 정해진 것이 없어 관례 정도로 사용하는 Rule 존재
    • 하이픈(-)은 사용 가능, 언더바(_)는 사용 X
    • 특별한 경우를 제외하고 대문자 사용 X(대소문자 구분)
    • URI 마지막에 슬래시(/)를 사용 X
    • 슬래시(/)로 계층 관계를 나타냄
    • 확장자가 포함된 파일 이름을 직접 포함시키지 X
    • URI는 명사를 사용

 

기존(Web) Service와 REST API Service

  • Web Service: 요청에 대한 처리를 한 후 가공된 data를 이용하여 특정 플랫폼에 적합한 형태의 View로 만들어서 반환
  • REST API Service
    • data 처리만 하거나 처리 후 반환될 data가 있다면 JSON이나 XML 형식으로 전달
    • View에 대해서 신경 X → Open API에서 많이 사용

 

API URI 설계(기존)

  • 기존의 접근 방식은 GET과 POST만으로 자원에 대한 CRUD 처리
  • URI에 해당 기능을 추가 작성
기능 HTTP method URI
게시글 목록 조회 GET /board/list
게시글 상세 조회 GET /board/detail?id=2
게시글 생성 POST /board/write
게시글 수정 POST /board/update
게시글 삭제 POST /board/delete?id=2

 

API URI 설계(REST API)

  • URI는 board라는 Resource를 활용하여 식별
  • HTTP method를 통해 CRUD 행위를 구분
기능 HTTP method URI
게시글 목록 조회 GET /board
게시글 상세 조회 GET /board/{id}
게시글 생성 POST /board
게시글 수정 PUT / PATCH /board
게시글 삭제 DELETE /board/{id}

 

RESTful

  • REST 아키텍처 스타일을 따르는 웹 서비스를 설계하고 구현하는 방식
  • 플랫폼 독립성 → REST API는 특정 언어나 플랫폼에 종속되지 않음
  • 높은 성능 → REST API는 cacheable 데이터를 지원하여 데이터를 캐시에 저장하고 빠르게 접근할 수 있음
  • 간결함과 명확성 → REST API는 URI와 HTTP method를 이용하여 자원과 행위를 명확하게 표현
  • 표준화된 통신 → REST API는 HTTP를 통해 작동

Spring REST API

REST Client

  • RESTful 웹 서비스에 HTTP 요청을 보내고 응답을 받는 프로그램 혹은 라이브러리
  • HTTP 요청 전송 / 응답 수신 가능
  • 대표적인 client로는 cURL, Postman, Talent API(크롬 웹스토어 설치) 등 ...

 

반응형