티스토리 뷰
REST
REST란?
- REST는 Representational State Transfer라는 용어의 약자로서 소프트웨어 프로그램 개발의 아키텍처의 한 형식이다.
- REST란, 웹에 존재하는 모든 자원(이미지, 동영상, DB 자원)에 고유한 URI를 부여해 활용하는 것으로, 자원을 정의하고 자원에 대한 주소를 지정하는 방법론을 의미한다.
- REST는 네트워크 상에서 Client와 Server 사이의 통신 방식 중 하나이다.
- 자원을 이름으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미
- HTTP URI로 잘 표현된 리소스에 대한 행위를 HTTP Method로 정의하는 방식
- 리소스의 내용은 json, xml, yaml 등의 다양한 표현 언어로 정의된다.
- REST는 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일이다.
REST가 필요한 이유
- 다양한 클라이언트의 등장
- 최근의 서버 프로그램은 다양한 브라우저와 안드로이폰, 아이폰과 같은 모바일 디바이스에서도 통신을 할 수 있어야 한다.
- Backend 하나로 다양한 Device를 대응하기 위해 REST의 필요성이 증대되었다.
REST 구성 요소
1. 자원 (Resource)
- 모든 자원에 고유한 ID가 존재하고, 이 자원은 Server에 존재한다.
- 자원을 구별하는 ID는 '/members/:member_id' 와 같은 HTTP URI 이다.
- Client는 URI를 이용해서 자원을 지정하고 해당 자원의 상태(정보)에 대한 조작을 Server에 요청한다.
2. 행위 (Verb)
- HTTP 프로토콜의 Method를 사용한다.
- HTTP 프로토콜은 GET, POST, PUT, DELETE 와 같은 메서드를 제공한다.
3. 표현 (Representations)
- Client가 자원의 상태(정보)에 대한 조작을 요청하면 Server는 이에 적절한 응답(Representation)을 보낸다.
- REST에서 하나의 자원은 JSON, XML, TEXT, RSS 등 여러 형태의 Representation으로 나타내어 질 수 있다.
- JSON 혹은 XML를 통해 데이터를 주고 받는 것이 일반적이다.
REST의 특징
1. Uniform (유니폼 인터페이스)
- URI로 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행하는 아키텍처 스타일을 말함
2. Stateless (무상태성)
- REST는 무상태성 성격을 가진다. 다시 말해 작업을 위한 상태정보를 따로 저장하고 관리하지 않는다.
세션 정보나 쿠키정보를 별도로 저장하고 관리하지 않기 때문에 API 서버는 들어오는 요청만을 단순히
처리하면 된다. 때문에 서비스의 자유도가 높아지고 서버에서 불필요한 정보를 관리하지 않음으로써
구현이 단순해진다.
3. Cacheable (캐시 가능)
- REST의 가장 큰 특징 중 하나는 HTTP라는 기존 웹표준을 그대로 사용한다는 것
- 즉, 웹에서 사용하는 기존 인프라를 그대로 활용이 가능하다.
- 따라서 HTTP가 가진 캐싱 기능이 적용 가능하다.
4. Self-descriptiveness (자체 표현 구조)
- 동사(Method) + 명사(URI) 로 이루어져있어 어떤 메서드에 무슨 행위를 하는지 알 수 있으며,
메시지 포맷 역시 JSON을 이용해서 직관적으로 이해가 가능한 구조로, REST API 메시지만 보고도
이를 쉽게 이해 할 수 있다.
5. Client - Server 구조
- REST 서버는 API 제공 및 비즈니스 로직 처리 및 저장을 책임짐
- 클라이언트는 사용자 인증이나 컨텍스트(세션, 로그인 정보 등)을 직접 관리함
- 각각의 역할이 확실히 구분되기 때문에 클라이언트와 서버에서 개발해야 할 내용이 명확해지고 서로 간 의존성이
줄어든다.
6. Layered System (계층형 구조)
- API 서버는 순수 비지니스 로직을 수행하고, 그 앞단에 사용자 인증, 암호화(ssl), 로드밸런싱 등을 하는 계층을
추가하여 구조상의 유연성을 가질 수 있다.
- PROXY, 게이트웨이 같은 네트워크 기반의 중간 매체를 사용할 수 있다.
REST API
REST API란
- API (Application Programming Interface) 란 프로그램간 상호작용을 촉진하며, 서로 정보를 교환가능 하도록 하는 것. 즉, 프로그램과 또 다른 프로그램을 연결해주는 일종의 다리라고 볼 수 있다.
- REST API는 REST 기반으로 서비스 API를 구현한 것을 의미한다.
REST API 설계 기본 규칙
- URI는 정보의 자원을 표현해야 한다.
- resource는 동사보다는 명사를, 대문자보다는 소문자를 사용
- resource의 컬렉션 이름으로는 복수명사를 사용
- resource의 도큐먼트 이름으로는 단수명사를 사용
- ex) http://restapi.example.com/sports/soccer (sports라는 컬렉션과 soccer라는 도큐먼트로 표현)
- ex) http://restapi/example.com/sports/soccer/players/13 (sports, players 컬렉션, soccer, 13 도큐먼트)
- 자원에 대한 행위는 HTTP Method(GET, PUT, POST, DELETE 등)로 표현한다.
- 슬래시 구분자(/ )는 계층 관계를 나타내는데 사용한다.
- URI 마지막 문자로 슬래시(/ )를 포함하지 않는다.
- 하이픈(-)은 URI 가독성을 높이는데 사용
- 밑줄(_)은 URI에 사용하지 않는다.
- 파일 확장자는 URI에 포함하지 않는다.
- 리소스 간에 연관 관계가 있는 경우
- /리소스명/리소스ID/관계가 있는 다른 리소스명
- ex) GET : /users/{userId}/devices (일반적으로 소유 'has'의 관계를 표현할 때)
RESTful
RESTful 이란?
- RESTful은 일반적으로 REST라는 아키텍처를 구현하는 웹 서비스를 나타내기 위해 사용되는 용어이다.
- RESTful은 REST를 REST답게 쓰기 위한 방법으로, 누군가가 공식적으로 발표한 것이 아니다.
- 즉, REST 원리를 잘 따르는 시스템을 RESTful이란 용어로 지칭한다.
RESTful의 목적
- 이해하기 쉽고 사용하기 쉬운 REST API를 만드는 것
참고자료
https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html
'면접대비' 카테고리의 다른 글
프로세스와 스레드에 대해 (0) | 2019.09.10 |
---|---|
싱클톤 패턴에 대해 (0) | 2019.09.09 |
객체 지향 프로그래밍 (OOP)에 대해 (0) | 2019.09.04 |
웹 서버와 웹 어플리케이션 서버(WAS)에 대해 (0) | 2019.09.04 |
쿠키와 세션에 대해 (0) | 2019.09.03 |
- Total
- Today
- Yesterday
- 스프링
- 메서드 참조
- 객체
- JVM 메모리 구조
- 싱글톤 레지스트리
- connectionless
- 멀티 프로세스
- Servlet
- jvm
- 인텔리제이
- git
- 스프링부트
- 가상 회선 방식
- 웹 서버
- 자바의 정석
- AJAX
- 그래프 순회 알고리즘
- 포워드 프록시
- 리버스 프록시
- 제네릭 메서드
- stateless
- 전자정부프레임워크
- 유효성검사
- 클래스
- 회원가입
- github
- 스프링 부트 시큐리티
- 람다식
- http
- 상속
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |