본문 바로가기
frontend/WEB

[WEB] 서버와 클라이언트 통신 방식 (API, Rest API, Restful API 란?)

by 신림쥐 2024. 1. 11.
728x90

 

     


    개요

    • 서버-클라이언트 관계에서의 역할을 이해하기
    • API의 개념에서부터 시작하여 REST API와 RESTful API

     

     

     

    서버와 클라이언트의 역할

    서버

    - 클라이언트에게 네트워크를 통해 정보나 서비스를 제공하는 것

    - 클라이언트의 요청을 처리하여 결과를 응답하는 시스템

     

    클라이언트

    - 클라이언트는 서버에서 받은 서비스를 사용하는 사용자

    - 서버에게 데이터를 요청하고 서버로부터 응답을 받아 사용하는 시스템

     

     

    서버-클라이언트 통신 방식은 다양한 프로토콜과 기술을 통해 구현된다.

    1. HTTP를 기반으로 한 요청-응답 패턴
    2. WebSocket을 이용한 실시간 통신
    3. gRPC와 같은 고성능 RPC 프레임워크
    4. GraphQL을 통한 데이터 쿼리

     

     

     

     

     

    728x90

     

    API

    • 애플리케이션 간의 상호작용을 가능하게 하는 정의 및 프로토콜 인터페이스
    • Application Programming Interface

     

    표준 API 특성

    • 문서화
    • API 형식 준수
    • 명확한 기능 제공

     

    HTTP 기반 API

    • HTTP를 기반으로 한 요청-응답 패턴
    • 클라이언트는 서버에 특정 작업을 요청하기 위해 HTTP 요청 생성
      • 요청 방식(HTTP Methods): GET, POST, PUT, DELETE 등
      • 요청 URL: 자원을 식별하는 경로
      • 헤더(Header): 요청에 대한 메타데이터 포함 (예: Content-Type, Authorization)
      • 바디(Body): 주로 POST와 PUT 요청에서 사용되며, 요청과 함께 전송되는 데이터

     

    Rest API

    • 웹 (HTTP) 의 장점을 활용하여  REST의 디자인 원칙 또는 표현 상태 전송 아키텍처 스타일을 준수하는 API
    • Representational State Transfer API
    • REST API의 설계 의도
      • 슬래시를 통해 계층관계를 표시
      • 숫자 사용의 경우 보통 id를 명시
      • 동사보단 명사를 위주로 사용
    • 특징 및 구조
      • 인터넷 식별자(URL)와 HTTP Method(POST,GET,PUT,DELETE)를 기반으로 해당 자원에 대한 자원에 대한 CRUD Operation을 적용
      • 데이터 포맷
        • JSON (JavaScript Object Notation): 경량의 데이터 교환 포맷으로, 사람과 기계 모두 쉽게 읽고 쓸 수 있음
        • XML (eXtensible Markup Language): 계층적 데이터 구조를 표현하는 마크업 언어로, 데이터의 의미와 구조를 정의
        • HTML (HyperText Markup Language): 웹 페이지의 구조와 내용을 정의하는 마크업 언어
        • 플레인 텍스트 (Plain Text): 포맷 없이 단순히 문자열로 데이터를 전송

     

    REST 구성 요소

    • CRUD Operation
      • Create : 생성(POST)
      • Read : 조회(GET)
      • Update : 수정(PUT)
      • Delete : 삭제(DELETE)

    Message format e.g.

    HTTP GET, http://example.com/users/
    HTTP POST, http://example.com/users/
    {
    	"users" : {
    		"name" : "kim"
    	}
    }

     

     

    REST 특징

    • Uniform Interface
    • Statelessness
    • Resource 지향 아키텍쳐
    • Client-Server Architecture
    • Cache Ability
    • Layered System
    • Code On Demand(Optional)

     

    Restful API

    • ‘REST API’를 제공하는 웹 서비스, REST API을 제공하는 경우 ‘RESTful 하다’고 표현 함
    • ‘RESTful 하다’ 라는 것은 REST API의 설계 의도를 명확하게 지켜주는 것이다.

     

    API vs  REST API vs  RESTful API

      API REST API RESTful API
    개념 소프트웨어 간의 상호 작용을 위한 정의 및 프로토콜 세트 REST 아키텍처 스타일을 따르는 API REST 아키텍처 원칙을 엄격히 준수하는 API

     

     

    Rest API, Restful API 사용하는 이유

    • 자원의 이름으로 구분해서 해당 상태, 정보를 자원을 바로 알아 볼 수 있다.
    • 애플리케이션을 분리와 통합하기 쉽다
    • 다양한 클라이언트의 등장으로 멀티 플랫폼에 대한 지원을 위해 사용한다.
    728x90