본문 바로가기
Old/Network

REST / REST API

by onenewkong 2023. 2. 11.

REST?

 

정의) Representational State Transfer 약자

자원을 이름으로 구분하여 해당 자원의 상태(정보) 주고 받는 모든 것을 의미

자원의 표현에 의한 상태 전달

  • 자원의 표현

 자원: 해당 소프트웨어가 관리하는 모든

 자원의 표현: 자원을 표현하기 위한 이름

  • 상태(정보) 전달

데이터가 요청되는 시점에서 자원의 상태(정보) 전달함

 

JSON 혹은 XML 통해 데이터를 주고 받는 것이 일반적

  • 월드와이드웹(WWW) 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 개발 아키텍처의 형식
  • REST 기본적으로 웹의 기존 기술과  HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 있는 아키텍처 스타일
  • REST 네트워크 상에서 클라이언트와 서버 사이의 통신 방식 하나임

 

 

REST 구체적인 개념

  • HTTP URI 통해 자원을 명시하고, HTTP Method 통해 해당 자원에 대한 CRUD Operation 적용하는 것을 의미
  • , REST 자원 기반의 구조 설계의 중심에 Resource 있고 HTTP Method 통해 Resource 처리하도록 설계된 아키텍처를 의미함
  • 웹사이트의 이미지, 텍스트, DB 내용 등의 모든 자원에 고유한 ID HTTP URI 부여함
  • CRUD Operation

Create: 생성(POST)
Read:
조회(GET)

Update: 수정(PUT)

Delete: 삭제(DELETE)

HEAD: header 정보 조회(HEAD)

 

 

 

REST 구성 요소

자원: URI

  • 모든 자원에 고유한 ID 존재하고, 자원은 서버에 존재함
  • 자원을 구별하는 ID HTTP URI
  • 클라이언트는 URI 이용해 자원을 지정하고 해당 자원의 상태(정보) 대한 조작을 서버에 요청함

행위: HTTP Method

  • HTTP 프로토콜의 Method 사용
  • HTTP 프로토콜은 GET, POST, PUT, DELETE 같은 메서드를 제공

표현

  • 클라이언트가 자원의 상태에 대한 조작을 요청하면 서버는 이에 적절한 응답을 보냄
  • REST에서 하나의 자원은 JSON, XML, TEXT, RSS 여러 형태의 표현으로 나타내어 있음
  • JSON 혹은 XML 통해 데이터를 주고 받는 것이 일반적

 

 

REST API

  • API: 데이터와 기능의 집합을 제공하여 컴퓨터 프로그램 상호작용을 촉진하며, 서로 정보를 교환 가능하도록 하는
  • REST API: REST 기반의 서비스 API, 최근 OpenAPI, 마이크로 서비스 등을 제공하는 업체 대부분은 REST API 제공함

 

 

웹호스팅

홈페이지 운영을 위해 공간을 임대하여 사용하는 서비스

도메인: 주소 + 웹호스팅: 콘텐츠의 저장 공간 -> 홈페이지

 

URI

특정 리소스를 식별하는 통합 자원 식별자 의미, 기술에서 사용하는 논리적 또는 물리적 리소스를 식별하는 고유한 문자열 시퀀스

URL

흔히 주소라고도 하며, 컴퓨터 네트워크 상에서 리소스가 어디 있는지 알려주기 위한 규약, URI 서브셋

-> 차이점: URI 식별, URL 위치를 가리킴

 

URI 구조

  1. scheme: 사용할 프로토콜을 뜻하며 웹에서는 http 또는 https 사용
  2. user password: 서버에 있는 데이터에 접근하기 위한 사용자의 이름과 비밀번호
  3. host port: 접근할 대상(서버) 호스트명과 포트번호
  4. path: 접근할 대상(서버) 경로에 대한 상세 정보
  5. query: 접근할 대상에 전달하는 추가적인 정보(파라미터)
  6. fragment: 메인 리소스 내에 존재하는 서브 리소스에 접근할 이를 식별하기 위한 정보

 

'Old > Network' 카테고리의 다른 글

게임 네트워킹  (0) 2023.07.27
게임 서버와 클라이언트  (0) 2023.07.24
Socket Programming  (0) 2023.07.24
컴퓨터 네트워크  (0) 2023.07.24
Multi Threading  (0) 2023.07.24