성장기록지
Rest API의 개념 본문
REST API란?
REST는 Representational State Transfer라는 용어의 약자로서 HTTP의 주요 저자 중 한 사람인 로이 필딩이
그 당시 웹(HTTP) 설계의 우수성에 비해 제대로 사용되지 못하는 모습에
웹의 장점을 최대한 활용할 수 있는 아키텍쳐로 REST를 발표하였고
그 아키텍쳐를 이용해 만든 API를 REST API라고 한다.
특징을 정리하자면 다음과 같다.
- HTTP 프로토콜 장점을 살릴 수 있는 네트워크 기반 아키텍쳐
- REST API을 구현하기 위해 HTTP method + 모든 개체 Resource화 + URL 디자인(라우팅)이 필요하다.
라우팅이란? 클라이언트의 요청에 대한 결과을 어떻게 이어줄 것인가 하는 처리방법에 대한 것을 말한다.
- URI를 이용한 접근 : 모든 개체를 리소스로 보고, 리소스에 고유번호를 부여
- URL 디자인 원칙
- 자원에 대한 처리를 주소에 나타내지 않는다(HTTP method는 내부적으로 처리한다는 의미),
- 어떤 자원인지 주소에 명확하게 나타낸다.
REST의 구성
- 자원(URL)
- 행위 (HTTP METHOD)
- 표현
자원(URL)
- 모든 자원에 고유한 ID가 존재하고, 이 자원은 Server에 존재한다.
- 자원을 구별하는 ID는 /orders/order_id/1 와 같은 HTTP URI 이다.
행위 (HTTP METHOD)
- HTTP 프로토콜의 Method를 사용한다.
- HTTP 프로토콜은 GET, POST, PUT, DELETE와 같은 메서드를 제공한다.
- GET : 정보를 요청하기 위해 사용(Read)
- POST : 정보를 입력하기 위해 사용(Create)
- PUT : 정보를 업데이트하기 위해 사용(Update)
- DELETE : 정보를 삭제하기 위해 사용(Delete)
표현(Representaion of Resource)
- Client가 자원의 상태 (정보)에 대한 조작을 요청하면 Server는 이에 적절한 응답 (Representation)을 보낸다
- REST에서 하나의 자원은 JSON, XML, TEXT, RSS 등 여러 형태의 Representation으로 나타낼 수 있다.
- 현재는 JSON으로 주고 받는 것이 대부분이다.
URL과 URI의 차이
URI (Uniform Resource Identifier)
- 통합 자원 식별자(Uniform Resource Identifier)는 인터넷에 있는 자원을 어디에 있는지 자원 자체를 식별하는 방법이다.
URL (Uniform Resource Locator)
- 파일식별자(Uniform Resource Locator)는 네트워크 상에서 자원이 어디 있는지 위치를 알려주기 위한 규약이다.
URI와 URL의 관게는 다음과 같다.
REST 특징
a. 클라이언트 / 서버 구조
- 클라이언트는 유저와 관련된 처리를, 서버는 REST API를 제공함으로써 각각의 역활이 확실하게 구분되고 일괄적인 인터페이스로 분리되어 작동할 수 있게 한다
- REST Server: API를 제공하고 비지니스 로직 처리 및 저장을 책임진다.
- Client: 사용자 인증이나 context (세션, 로그인 정보) 등을 직접 관리하고 책임진다.
- 서로 간 의존성이 줄어든다.
b. 무상태성 (Stateless)
- REST는 HTTP의 특성을 이용하기 떄문에 무상태성을 갖는다.
- 즉 서버에서 어떤 작업을 하기 위해 상태정보를 기억할 필요가 없고 들어온 요청에 대해 처리만 해주면 되기 때문에 구현이 쉽고 단순해진다.
c. 캐시 처리 가능 (Cacheable)
- HTTP라는 기존 웹표준을 사용하는 REST의 특징 덕분에 기본 웹에서 사용하는 인프라를 그대로 사용 가능하다.
- 대량의 요청을 효율적으로 처리하기 위해 캐시가 요구된다.
- 캐시 사용을 통해 응답시간이 빨라지고 REST Server 트랜잭션이 발생하지 않기 때문에 전체 응답시간, 성능, 서버의 자원 이용률을 향상 시킬 수 있다.
d. 자체 표현 구조 (Self - descriptiveness)
- JSON을 이용한 메시지 포멧을 이용하여 직관적으로 이해할 수 있고 REST API 메시지만으로 그 요청이 어떤 행위를 하는지 알 수 있다.
e. 계층화 (Layered System)
- 클라이언트와 서버가 분리되어 있기 때문에 중간에 프록시 서버, 암호화 계층 등 중간매체를 사용할 수 있어 자유도가 높다
f. 유니폼 인터페이스 (Uniform)
- Uniform Interface는 Http 표준에만 따른다면 모든 플랫폼에서 사용이 가능하며, URI로 지정한 리소스에 대한 조작을 가능하게 하는 아키텍쳐 스타일을 말한다
- URI로 지정한 Resource에 대한 조작을 통일되고 한정적인 인터페이스로 수행한다.
- 즉, 특정 언어나 기술에 종속되지 않는다.
https://velog.io/@somday/RESTful-API-%EC%9D%B4%EB%9E%80
RESTful API 이란
REST API 에서 REST는 Representational State Transfer 의 약자로 소프트웨어 프로그램 아키텍처의 한 형식 입니다.즉, 자원을 이름 (자원의 표현) 으로 구분하여 해당 자원의 상태 (정보)를 주고 받는 모든
velog.io
'CS' 카테고리의 다른 글
[운영체제] 프로세스,멀티프로그래밍, 멀티태스킹, 스레드, 멀티스레딩, 멀티프로세싱, (0) | 2025.02.28 |
---|---|
프로토콜과 OSI 7계층 (1) | 2025.01.01 |
[자료구조] Set과 자바에서의 HashSet (1) | 2024.12.27 |
[자료구조] 해시(Hash), 자바에서의 해시 충돌 (1) | 2024.12.25 |