REST(Representational State Transfer)는
- 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미합니다.
- 자원의 상태 : JSON, XML, TEXT, RSS
즉 REST란
- HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고,
- HTTP Method(POST, GET, PUT, DELETE, PATCH 등)를 통해
- 해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미합니다.
예를 들면, "라면인 상품을 생성한다” 라는 호출이 있을 때,
“상품”은 생성되는 자원 (resource)
“생성한다”라는 행위는 메서드 (post)
"상품명이 진라면인 상품"은 메시지 ({"name":"진라면","price":"1000"})
- 이를 REST 형태로 표현하면 다음과 같다.
HTTP POST , http://localhost/products/ {
"products": {
"name":"라면",
"price":"1000"
}
}
REST의 장단점
- 장점:
- HTTP 표준 프로토콜 인프라를 그대로 사용하기 때문에 별도에 인프라 구축없이 쉽게 사용 가능
- REST API 메시지의 의도하는바를 쉽게 할수 있음
- 서버와 클라이언트의 역할을 명확하게 구분한다.
- 단점 :
- 사용할 수 있는 메소드가 4가지 밖에 없다. HTTP Method 형태가 제한적이다.
REST가 필요한 이유
- 최근의 서버 프로그램은 다양한 브라우저와 안드로이폰, 아이폰과 같은 모바일 디바이스에서도 통신을 할 수 있어야 한다
REST 구성 요소
- 자원(Resource): URI
- 모든 자원에 고유한 ID가 존재하고, 이 자원은 Server에 존재한다.
- 자원을 구별하는 ID는 ‘/groups/:group_id’와 같은 HTTP URI 다.
- Client는 URI를 이용해서 자원을 지정하고 해당 자원의 상태(정보)에 대한 조작을 Server에 요청한다.
- 행위(Verb): HTTP Method
- HTTP 프로토콜의 Method를 사용한다.
- HTTP 프로토콜은 GET, POST, PUT, DELETE 와 같은 메서드를 제공한다.
- 표현(Representation of Resource)
- Client가 자원의 상태(정보)에 대한 조작을 요청하면 Server는 이에 적절한 응답(Representation)을 보낸다.
- REST에서 하나의 자원은 JSON, XML, TEXT, RSS 등 여러 형태의 Representation으로 나타내어 질 수 있다
REST API 는 뭐야?
- REST 기반으로 서비스 API를 구현한 것
- API는 Application Programming Interface
- ex) 안드로이드 같은 경우 retrofit을 이용해서 api 를 불러오면 주로 json형태로 불러와서 보여줌.
- REST API의 특징
- REST 기반으로 시스템을 분산해 확장성과 재사용성을 높여 유지보수 및 운용을 편리하게 할 수 있음 -HTTP를 지원하는 프로그램 언어로 클라이언트, 서버를 구현할 수 있음
RESTful ?
- REST를 REST답게 쓰기 위한 방법(누군가 공식적으로 발표한 것은 아님, 즉 REST 원리를 따르는 시스템은 RESTful이란 용어로 지칭)
- RESTful 하지 못한 경우
- CRUD 기능을 모두 POST로만 처리하는 API
- route에 resource, id외의 정보가 들어가는 경우
'CS 면접 준비 > 네트워크' 카테고리의 다른 글
[네트워크] Http Request Code (0) | 2022.11.12 |
---|---|
[네트워크] HTTP vs HTTPS (0) | 2022.11.11 |