REST 란?
HTTP를 어떻게 사용할 것인지에 대한 설계 원칙
HTTP는 통신을 위한 기본적인 규약이라면, REST는 그 위에서 어떻게 설계할지에 대한 원칙을 제공하는 것입니다.
REST는 HTTP 프로토콜을 사용해서 자원을 표현하고, 자원에 대해 어떻게 요청을 보낼지 정의합니다.
HTTP = 서버-클라이언트 간 통신규칙. (어떻게 데이터를 전송할것인지)
HTTP 요청/응답은 어떻게 형식이 되어야 하고, 클라이언트는 서버에 어떤 **메서드(GET, POST, PUT, DELETE)**를 사용하여 요청을 보낼 것인지, 상태 코드는 어떤 형식으로 반환될 것인지 등을 정의합니다.
REST = HTTP를 더 효과적으로 사용하는 방법을 제시하는 규약
자원(Resource)을 어떻게 정의하고, HTTP 메서드(GET, POST, PUT, DELETE)를 어떻게 사용할지, URL 설계는 어떻게 할지, 상태 코드를 어떻게 활용할지 등을 규명합니다.
REST API란?
REST 원칙에 따라 설계된 API .
HTTP를 사용하여 리소스를 CRUD(생성, 읽기, 업데이트, 삭제) 방식으로 다룰 수 있게 해주는 웹 API입니다.
그 외 다른 API 🔽
더보기
REST 외에 다른 API들
API는 REST 외에도 여러 가지 종류가 있습니다. 주요 API 유형을 소개할게요.
1. SOAP (Simple Object Access Protocol)
- SOAP API는 XML 기반의 프로토콜로, 데이터를 전달할 때 SOAP 메시지를 사용합니다.
- SOAP은 엄격한 규약을 따르며, 주로 웹 서비스에서 사용됩니다. 예를 들어, 은행이나 대형 기업 시스템에서 데이터 전송에 사용됩니다.
- SOAP은 HTTP뿐만 아니라 SMTP, FTP와 같은 다른 프로토콜을 사용할 수 있습니다.
- REST와 비교: SOAP는 더 복잡하고 무겁습니다. REST는 더 간단하고 유연하게 설계할 수 있지만, SOAP는 보안, 트랜잭션, 메시징 등의 기능을 강력하게 지원합니다.
2. GraphQL
- GraphQL은 페이스북에서 개발한 쿼리 언어로, 클라이언트가 필요한 데이터를 정확히 **질의(Query)**하고 서버는 그 데이터를 **응답(Respond)**하는 방식입니다.
- REST API는 엔드포인트 별로 데이터를 가져오는 방식(예: /users, /posts)인데, GraphQL은 클라이언트가 필요한 데이터를 하나의 요청으로 요청할 수 있습니다.
- 예: "사용자 정보와 그 사용자가 작성한 포스트 목록을 한 번에 요청할 수 있다."
- 장점: 클라이언트는 필요한 데이터만 요청할 수 있기 때문에, 불필요한 데이터 전송을 줄일 수 있습니다.
- 단점: 처음 설정이 복잡할 수 있고, 서버에서 데이터 요청을 세밀하게 관리해야 합니다.
3. gRPC
- gRPC는 Google에서 개발한 고성능 RPC(Remote Procedure Call) 시스템입니다.
- gRPC는 HTTP/2 프로토콜을 기반으로 하며, ProtoBuf(Protocol Buffers)라는 바이너리 직렬화 포맷을 사용하여 데이터를 주고받습니다.
- 장점: 빠른 속도, 스트리밍 지원, 다양한 언어 지원
- 단점: 다른 RESTful API 방식에 비해 설정과 이해가 어려울 수 있습니다.
4. WebSocket
- WebSocket API는 클라이언트와 서버 간의 양방향 통신을 지원합니다.
- 특징: 서버와 클라이언트가 지속적으로 연결되어 있고, 실시간 데이터를 전송할 때 사용됩니다. 주로 채팅 애플리케이션이나 실시간 알림 시스템에서 사용됩니다.
- WebSocket은 HTTP 프로토콜을 기반으로 초기 연결만 설정하고, 이후에는 양방향 통신을 통해 데이터를 주고받습니다.
REST 특징
1. 자원을 URL 로 식별
2. HTTP 메소드로 자원요청
3. 무상태성
각 HTTP 메서드는 자원에 대해 어떤 동작을 수행할지를 정의합니다:
- GET /users: 사용자 목록 조회
- POST /users: 새 사용자 생성
- PUT /users/{id}: 특정 사용자 정보 수정
- DELETE /users/{id}: 특정 사용자 삭제
- 상태 코드를 사용하여 요청 결과를 명확하게 표현합니다. 예를 들어 200 OK, 404 Not Found, 500 Internal Server Error 등을 응답으로 보냅니다.
댓글