| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- REST API
- java란 무엇인가
- 스프링부트 장점
- 스프링부트회원가입
- Service Worker
- C# CS
- Blazor WebAssembly
- UaExpert download
- 프론트엔드
- 스프링부트로그인
- prosys opc-ua
- CS
- nosql
- OPC-UA
- opc-ua 다운로드
- java란?
- 스프링부트의 장단점
- UaExpert다운로드
- 기술면접
- C#이론
- Blazor Web App
- 컴퓨터과학
- C# Blazor
- OPC-UA Download
- jvm구성요소
- spring spring boot 차이점 공통점
- 스프링 스프링부트 차이점 공통점
- Prosys Opc-ua 다운로드
- cs기술면접
- 스프링부트 단점
- Today
- Total
담비의 개발블로그
REST / REST API / RESTful 본문
REST(Representational State Transfer)
웹 서비스나 API를 설계하는 데 자주 사용되는 아키텍처 스타일이다. REST는 특정 프로토콜이나 기술에 의존하지 않고, 주로 HTTP 프로토콜을 기반으로 클라이언트와 서버 간의 상호작용을 정의한다. REST는 웹 아키텍처에서 성능, 확장성, 단순성, 수정 가능성, 가시성, 이식성, 신뢰성 등의 특성을 강조한다. 네트워크에서 통신을 구성할 때 이런 구조로 설계하라는 지침이라고 생각하면 된다.
아키텍처: 시스템이 어떻게 설계되고 구축되어야 하는지, 또한 시간이 지나면서 어떻게 유지되고 확장될 수 있는지에 대한 가이드라인을 제공한다.
1. 리소스(Resource)
REST에서 가장 중요한 개념 중 하나는 리소스다. 리소스는 URI(Uniform Resource Identifier)를 통해 고유하게 식별됩니다. 예를 들어, 웹 API에서 /users는 사용자 목록을 의미하는 리소스일 수 있다. 리소스는 데이터(문서, 사진, 서비스 등)를 의미할 수 있으며, 그 데이터는 클라이언트가 서버로부터 가져가거나 조작할 수 있다.
2. 표현(Representation)
리소스는 클라이언트와 서버 사이에서 다양한 표현 형태로 전달된다. 예를 들어, 리소스를 JSON, XML, HTML과 같은 형식으로 표현할 수 있다. 클라이언트는 서버로부터 해당 리소스를 특정 형식으로 받아서 처리한다. 예를 들어, /users/123는 사용자 123에 대한 리소스를 JSON 형식으로 표현할 수 있습니다.
3. 상태의 전이(State Transfer)
REST는 클라이언트와 서버 사이에서 리소스의 상태를 전이시키는 방식을 정의한다. 클라이언트는 서버로부터 리소스의 상태를 요청하고, 서버는 그에 따른 응답을 제공한다. 상태 전이는 보통 CRUD(Create, Read, Update, Delete) 작업을 통해 이루어진다.
Create (POST): 새로운 리소스를 생성.
Read (GET): 리소스의 상태를 읽음.
Update (PUT 또는 PATCH): 기존 리소스를 업데이트.
Delete (DELETE): 리소스를 삭제.
4. 무상태성(Stateless)
REST의 중요한 특징 중 하나는 무상태성이다. 각 요청은 독립적이며, 서버는 각 요청을 처리할 때 그 이전 요청에 대한 정보나 상태를 유지하지 않는다. 클라이언트는 각 요청에 필요한 모든 정보를 포함하여 서버로 보내야 하며, 서버는 각 요청을 독립적으로 처리한다. 이는 서버의 확장성 및 성능을 높이는 장점이 있지만, 클라이언트 측에서 더 많은 정보를 포함해야 할 필요가 있다.
5. 캐시 가능(Cacheable)
REST는 응답을 캐시할 수 있는 구조를 갖는다. 클라이언트는 서버의 응답을 캐시해 두고, 동일한 요청이 반복될 경우 서버에 다시 요청하지 않고 캐시된 데이터를 사용할 수 있다. 이를 통해 성능을 최적화할 수 있다.
6. 클라이언트-서버 구조
REST는 클라이언트와 서버의 역할을 명확히 구분한다. 클라이언트는 서버로부터 리소스를 요청하고, 서버는 그 요청에 대한 응답을 처리한다. 이 구조 덕분에 클라이언트와 서버의 기능을 분리하여 각자의 독립성을 보장하고, 서로 독립적으로 개발 및 관리할 수 있다.
7. 계층화된 시스템(Layered System)
REST 아키텍처는 여러 계층으로 나뉜 시스템을 지원한다. 즉, 클라이언트는 서버와 직접 상호작용할 필요 없이 중간 계층(프록시, 게이트웨이 등)을 통해 통신할 수 있다. 이를 통해 보안, 로드 밸런싱, 캐싱 등의 기능을 쉽게 구현할 수 있다.
8. 코드 온 디맨드(Code on Demand) (선택 사항)
REST는 필요한 경우 서버에서 클라이언트로 실행 가능한 코드를 전송하는 것도 허용한다. 예를 들어, 서버가 클라이언트에게 JavaScript를 보내 브라우저에서 실행되게 할 수 있다. 이 기능은 선택적이며, 필수 요건은 아니다.
Rest api
REST 아키텍처를 기반으로 하는 API(응용 프로그램 프로그래밍 인터페이스)이다. API는 소프트웨어가 서로 상호작용할 수 있게 해주는 도구와 규칙의 집합인데, REST API는 REST의 원칙을 따르는 이러한 도구이다.
1. 리소스(Resource)
REST API는 서버의 데이터를 리소스로 간주한다. 리소스는 고유한 URI(Uniform Resource Identifier)를 가지고 있으며, 이 URI를 통해 리소스에 접근할 수 있다. 예를 들어, /users는 사용자 목록 리소스를 나타낼 수 있다.
2. HTTP메서드 사용
REST API는 HTTP 메서드를 사용하여 리소스에 대한 작업을 수행다. 일반적으로 사용되는 HTTP 메서드는 다음과 같다.
GET: 리소스를 읽거나 조회
POST: 새로운 리소스를 생성
PUT/PATCH: 기존 리소스를 수정
DELETE: 리소스를 삭제
3. 무상태성
REST API는 무상태성을 요구한다. 즉, 각 요청은 독립적이어야 하며, 서버는 이전 요청의 상태를 기억하지 않는다. 클라이언트는 요청에 필요한 모든 정보를 포함해야 한다.
4. 캐시 가능
REST API의 응답은 캐시될 수 있다. 이를 통해 클라이언트는 동일한 요청에 대해 서버의 응답을 다시 요청하지 않고 저장된 데이터를 사용할 수 있다.
5.계층화된 시스템
REST API는 계층화된 시스템을 지원한다. 클라이언트는 직접 서버와 상호작용하지 않고 중간 계층(프록시, 게이트웨이 등)을 통해 통신할 수 있다. 이 구조는 보안과 성능을 향상시킬 수 있다.
6. 표현
리소스는 다양한 형식(JSON, XML 등)으로 표현될 수 있으며, 클라이언트는 필요한 형식으로 리소스를 요청할 수 있다.
Restful
"RESTful"이라는 용어는 REST 아키텍처 스타일의 원칙과 규칙을 충실히 따르는 웹 서비스를 지칭한다.즉, RESTful 웹 서비스는 REST의 기본 개념과 원칙을 잘 구현한 API를 말한다. RESTful 웹 서비스는 REST 아키텍처의 원칙을 충실히 따르는 웹 서비스로 "RESTful"이라는 용어는 REST의 원칙을 잘 구현하고 있는 웹 서비스를 설명하는 데 사용된다.
1. 리소스 중심: 모든 데이터를 리소스(URI)로 표현한다.
2. HTTP 메서드: CRUD 작업을 HTTP 메서드(POST, GET, PUT, DELETE 등)로 수행한다.
3. 무상태성: 각 요청은 독립적이며 서버는 상태를 유지하지 않는다.
4. 캐시 가능: 응답을 캐시할 수 있다.
5. 계층화된 시스템: 계층화된 구조를 지원힌다.
'개발관련이야기' 카테고리의 다른 글
| [디자인패턴]디자인패턴 종류 (1) | 2024.10.24 |
|---|---|
| synchronize Gradle project with workspace 반복현상 (0) | 2024.10.07 |
| 웹 탭 아이콘 설정 방법(Favicon) (0) | 2024.09.11 |
| 이미지 최적화기술 (4) | 2024.08.28 |
| redirect란? (0) | 2024.08.13 |