1. RESTful API란?
- REST(Representational State Transfer)
- 웹의 기본적인 상태 전달 구조를 기반으로 한 아키텍처 스타일로, 클라이언트와 서버 간의 상태를 전송하는 방법을 정의한다.
- API란?
- 어플리케이션 프로그래밍 인터페이스는 다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙을 정의한다.
2. RESTful API 주요 특징
- Stateless(무상태성)
- 서버가 이전의 모든 요청과 독립적으로 모든 클라이언트 요청을 완료하는 통신 방법을 나타낸다.
- 클라인언트는 임의의 순서로 리소스를 요청할 수 있으며 모든 요청은 무상태이거나 다른 요청과 부린된다.
- REST API 설계 제약 조건은 서버가 매번 요청을 완전히 이해해서 이행할 수 있음을 의미한다.
- Client-Server Architecture(클라이언트-서버 아키텍처)
- 클라이언트와 서버는 독립적으로 개발되며, 서로의 내부 구조에 영향을 주지 않는다.
- 서버는 요청을 다른 서버로 전달할 수도 있다.
- 클라이언트 요청을 이행하기 위해 함께 작동하는 보안, 애플리케이션 및 비즈니스 로직과 같은 여러 계층으로 여러 서버에서 실행되도록 RESTful 웹 서비스를 설계할 수 있다.
- 이런 계층은 클라이언트에 보이지 않는 상태로 유지된다.
- Uniform Interface(일된 인터페이스)
- 리소스를 식별하고, 리소스에 대한 표현을 전송하며, 리소스에 대한 상태를 조작하는 데 필요한 행동을 정의 하는 일관된 인터페이스를 제공한다.
- Resource-Based(리소스 기반)
- 모든 데이터는 리소스로 표현되며, 각 리소스는 고유한 식별자(URL)를 가지고 있다.
- Stateless Communication(무상태 통신)
- 각 요청은 필요한 모든 정보를 포함하며, 서버는 클라이언트의 상태를 저장하지 않는다.
- 서버의 확장성을 높이는 데 도움이 된다.
3. RESTful API의 구성 요소
- Resouce(리소스)
- 데이터나 서비스를 표현하는 개체를 말한다.
- ex) '/users', '/products' 등의 URL 경로가 리소스를 나타낸다.
- HTTP Methods(HTTP 메서드)
- GET: 리소스 조회
- POST: 새로운 리소스 생성
- PUT: 기존 리소스 수정 또는 새로운 리소스 생성
- DELETE: 리소스 삭제
- PATCH: 리소스 부분 수정
- Representation(표현)
- 리소스의 상태를 나타내는 데이터 형식 (JSON, XML 등)
- URL (Uniform Resource Locator)
- 각 리소스는 고유한 식별자를 가지며, URL을 통해 접근할 수 있다.
4. RESTful API의 설계 원칙
- URL 설계
- 명사로 리소스를 표현, 동사는 HTTP 메서드를 통해 행동을 나타낸다.
- ex) '/users' (GET: 모든 사용자 조회)
- 상태 코드(Status Codes)
- 요청의 성공 또는 실패를 나타내는 HTTP 상태 코드를 적절하게 사용
- ex) '200 OK', '201 Created', '400 Bad Request', '500 Internal Server Error'
- 에러 처리
- 오류 메시지와 함께 적절한 상태 코드를 반환하여 클라이언트에게 오류 상황을 명확하게 전달
- HATEOAS(Hypermedia As The Engine Of Application State)
- 클라이언트에게 가능한 행동을 알려주기 위해 응답에 하이퍼링크를 포함시킨다.
'다양한 Dev. > 기본 정리' 카테고리의 다른 글
2024.03.26 - 컴퓨터 네트워크란? (0) | 2024.03.26 |
---|---|
2024.03.12 - [Path Parameter] vs. [Query Parameter] (0) | 2024.03.12 |
2024.02.16 - Github와 Discord 연동하기 (0) | 2024.02.16 |
2024.01.07 - OOP(Object-Oriented Programming)란? (0) | 2024.01.07 |
2023.09.30 - Swagger(Nest.js) 작성 방법 (0) | 2023.09.30 |