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