| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- Blazor Web App
- jvm구성요소
- C# CS
- opc-ua 다운로드
- 스프링부트 단점
- REST API
- 스프링부트 장점
- 기술면접
- java란?
- 스프링부트로그인
- C# Blazor
- nosql
- 스프링부트회원가입
- spring spring boot 차이점 공통점
- prosys opc-ua
- Blazor WebAssembly
- C#이론
- OPC-UA
- UaExpert download
- 스프링부트의 장단점
- UaExpert다운로드
- 프론트엔드
- java란 무엇인가
- cs기술면접
- 스프링 스프링부트 차이점 공통점
- Prosys Opc-ua 다운로드
- CS
- Service Worker
- 컴퓨터과학
- OPC-UA Download
- Today
- Total
담비의 개발블로그
rest api의 정의 본문
REST란?
REST(Representational State Transfer)는 분산 시스템에서 네트워크 상의 자원(Resource)을 효과적으로 관리하기 위한 소프트웨어 아키텍처 스타일이다. 2000년 로이 필딩(Roy Fielding)이 논문에서 제안한 개념으로, 웹의 기본 원리인 HTTP 프로토콜을 최대한 활용하는 설계를 지향한다.
REST API란?
REST API는 REST 아키텍처 스타일을 따르는 API(Application Programming Interface)로, HTTP 기반으로 동작하며, 클라이언트와 서버 간에 데이터를 주고받을 때 사용된다.
REST의 주요 원칙 (RESTful API의 설계 원칙)
1. 클라이언트-서버(Client-Server) 구조
- 클라이언트(예: 웹, 모바일 앱)와 서버(예: 백엔드)는 완전히 분리되어야 한다.
- 클라이언트는 서버의 자원을 요청하고, 서버는 해당 요청을 처리하여 응답을 반환한다. 이를 통해 클라이언트와 서버의 독립성이 보장되며, 각각의 확장이 용이하다.
2. 무상태성(Stateless)
- 서버는 클라이언트의 요청을 처리할 때, 이전 요청의 상태를 저장하지 않는다.
- 모든 요청은 필요한 정보를 자체적으로 포함하여 보내야 한다. 예를 들어, 로그인 상태를 서버에서 유지하는 것이 아니라, 토큰(JWT 등)을 사용하여 인증한다.
3. 캐시 가능(Cacheable)
- REST API는 HTTP의 캐싱 기능을 활용할 수 있어야 한다. 예를 들어, GET 요청에 대한 응답은 캐싱할 수 있으며, Cache-Control 헤더를 사용하여 캐싱 정책을 설정할 수 있다.
4. 계층화된 시스템(Layered System)
- 클라이언트는 직접적으로 서버와만 통신하는 것이 아니라, 여러 계층을 거칠 수 있다. 예를 들어, 로드 밸런서, 프록시 서버, 보안 게이트웨이 등이 중간에 존재할 수 있으며, 클라이언트는 이를 구분할 필요가 없다.
5. 일관된 인터페이스(Uniform Interface)
- REST API는 일관된 방식으로 설계되어야 하며, 자원(Resource)과 이를 조작하는 방법이 명확해야 한다. 이를 위해 URI 설계와 HTTP 메서드 사용 원칙이 존재한다.
6. Code on Demand (선택 사항)
- REST는 필요할 경우, 클라이언트가 실행할 수 있는 스크립트(예: JavaScript 코드)를 제공할 수도 있다. 하지만, 이 원칙은 선택적이며, 대부분의 REST API에서는 적용되지 않는다.
REST API의 구성 요소
1. 자원(Resource)
REST API에서 가장 중요한 개념은 "자원(Resource)"이다.
자원은 URI(Uniform Resource Identifier)로 표현된다.
예를 들어, https://api.example.com/users/1는 ID가 1인 "User" 자원을 나타낸다.
2. HTTP 메서드 (CRUD 매핑)
REST API는 HTTP 메서드를 활용하여 자원을 조작한다.
| HTTP메서드 | 역할 | 예시 |
| GET | 데이터 조회(Read) | GET /users (전체 사용자 목록 조회) |
| POST | 데이터 생성(Create) | POST /users (새 사용자 등록) |
| PUT | 데이터 전체 수정(Update) | PUT /users/1 (ID 1 사용자 전체 수정) |
| PATCH | 데이터 일부 수정(Update) | PATCH /users/1 (ID 1 사용자 일부 수정) |
| DELETE | 데이터 삭제(Delete) | DELETE /users/1 (ID 1 사용자 삭제) |
3. HTTP 상태 코드 (Response Status Code)
REST API는 응답 시, HTTP 상태 코드를 사용하여 결과를 알려준다.
| 상태코드 | 의미 | 설명 |
| 200 OK | 성공 | 요청이 정상적으로 처리됨 |
| 201 Created | 리소스 생성됨 | 새로운 자원이 생성됨 (예: 회원 가입 성공) |
| 204 No Content | 성공(내용 없음) | 요청은 성공했지만, 반환할 내용이 없음 (예: 삭제 성공) |
| 400 Bad Request | 잘못된 요청 | 요청이 유효하지 않음 |
| 401 Unauthorized | 인증 필요 | 인증되지 않은 사용자 |
| 403 Forbidden | 접근 금지 | 권한이 부족함 |
| 404 Not Found | 리소스 없음 | 요청한 자원이 존재하지 않음 |
| 500 Internal Server Error | 서버 오류 | 서버에서 오류 발생 |
'CS(컴퓨터과학)' 카테고리의 다른 글
| [CS] 원시타입 참조타입 (0) | 2025.10.21 |
|---|---|
| [CS]Node.js는 싱글스레드인데 비동기 처리 하는 원리 (2) | 2025.07.06 |
| [CS]TCP(Transmission Control Protocol)/UDP(User Datagram Protocol) (0) | 2025.01.11 |
| [CS]RDBMS(관계형 데이터베이스)/ nosql의 차이 (0) | 2025.01.09 |
| JDBC란? (0) | 2024.08.08 |