본문 바로가기

배운내용 정리

REST

1. Rest

2. Rest의 구성

3. REST의 속성

4. REST API

5. RESTful API

1. Rest

Representational State Transfer(Rest)는 API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처이다.

REST는 처음에 인터넷과 같은 복잡한 네트워크에서 통신을 관리하기 위한 지침으로 만들어졌다.

 

개념

HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 정보 전달 방식

 

CRUD Operation

Create : 생성(POST)
Read : 조회(GET)
Update : 수정(PUT)
Delete : 삭제(DELETE)

 

2. REST의 구성

자원(Resource)
  • 모든 자원에 고유한 ID가 존재하고, 이 자원은 Server에 존재
  • 자원을 구별하는 ID는 '/groups/:group_id'와 같은 HTTP URI
  • Client는 URI를 이용해서 자원을 지정하고 해당 자원의 상태(정보)에 대한 조작을 Server에 요청
행위(Verb)
  • HTTP 프로토콜의 Method 사용
  • HTTP 프로토콜은 GET, POST, PUT, DELETE 와 같은 메서드 제공
표현(Representation)
  • Client가 자원의 상태(정보)에 대한 조작을 요청하면 Server는 이에 적절한 응답(Representation)을 회신
  • REST에서 하나의 자원은 JSON, XML, TEXT, RSS 등 여러 형태로 표현
  • 일반적으로 JSON이나 XML 이용

 

 

3. REST의 특징

  • 인터페이스 일관성 : 일관적인 인터페이스로 분리되어야 한다
  • 무상태(Stateless): 각 요청 간 클라이언트의 Context가 서버에 저장되어서는 안 된다
  • 캐시 처리 가능(Cacheable): HTTP에서와 같이 클라이언트는 응답을 캐싱할 수 있어야 한다.
    • 잘 관리되는 캐싱은 클라이언트-서버 간 상호작용을 부분적으로 또는 완전하게 제거하여 scalability와 성능을 향상시킨다.
    • 대량의 요청을 효율적으로 처리할 수 있다.
  • 계층화(Layered System): 클라이언트는 보통 대상 서버에 직접 연결되었는지, 또는 중간 서버를 통해 연결되었는지를 알 수 없다. 중간 서버는 로드 벨런싱 기능이나 공유캐시 기능을 제공함으로써 시스템 규모 확장성을 향상시키는 데 유용하다.
  • Code-On-Demand(optional) - 자바 애플릿이나 자바스크립트의 제공을 통해 서버가 클라이언트가 실행시킬 수 있는 로직을 전송하여 기능을 확장시킬 수 있다.
  • Server-Client(서버-클라이언트 구조): 아키텍처를 단순화시키고 작은 단위로 분리(decouple)함으로써 클라이언트-서버의 각 파트가 독립적으로 개선될 수 있도록 해준다..

4. REST API 

  • HTTP와 URI 기반으로 자원에 접근할 수 있도록 제공하는 애플리케이션 개발 인터페이스이다. 기본적으로 개발자는 HTTP 메소드와 URI 만으로 인터넷에 자료를 CRUD 할 수 있다.
  • REST API를 제공하는 웹 서비스를 RESTful 하다고 할 수 있다.
  • RESTful은 REST를 REST 답게 쓰기 위한 방법으로, 누군가가 공식적으로 발표한 것은 아니다.

 

5. RESTful API

서버의 api가 적절하게 http를 준수하며 잘 설계되어있으면 RESTful 하게 설계되어 있다고 생각하면 좋다.

'배운내용 정리' 카테고리의 다른 글

Spring IoC와 DI  (0) 2023.11.10
Spring MVC  (0) 2023.11.09
IntelliJ 한글깨짐 현상 수정  (0) 2023.11.04
Spring port error  (1) 2023.10.31
Java Thread(3)  (0) 2023.10.30