RESTful API

songsong·2020년 4월 2일
0

RESTful API

목록 보기
1/2
post-thumbnail

📖 Representational State Transfer

1. 애플리케이션 (Application)통신

오늘날 대부분의 애플리케이션은 상호 운용성을 기본 기능으로 제공해야 한다. 특정 순간에 애플리케이션은 다른 애플리케이션과 통신한다. 따라서 모든 애플리케이션이 기본 운영 체제 및 프로그래밍 언어에 의존하지 않고, 다른 애플리케이션과 통신 되어야 한다. 웹 서비스는 이러한 애플리케이션을 만드는데 사용한다.

2. 웹 서비스 (Web Service)

웹 서비는 애플리케이션과 시스템이 인터넷을 통해 데이터를 교환하는 데 사용하는 표준 및 프로트콜 모음 이다. 모든 프로그래밍 언어로 작성 될 수 있으며 운영체제에 독립적 이다.

3. REST 란?

REST는 REpresentational State Transfer 라는 용어의 약자로서 2000년도에 로이 필딩(Roy Fielding)의 박사학위 논문에서 최초로 소개 되었다.
로이 필딩은 HTTP의 주요 저자 중 한 사람으로 그 당시 웹 (HTTP) 설계의 우수성에 비해 제대로
사용되어지지 못하는 모습에 안타까워 하며, 웹의 장점을 최대한 활용수 있는 아키텍처(Architecture)로써 REST를 발표 했다.

👉 클라이언트 (Client) ↔ 서버 (Server)의 동작을 제어하는 기본 특성 및 프로트콜을 제공하는 상태 (state) 비 저장소 소프트웨어 아키텍처.

📄 Architecture
최적화를 목표로 두고 시스템 구성과 동작원리, 시스템 구성환경 등을 설명 및 설계하는 청사진 또는 설계도 이다.

4. RESTfull 서비스

RESTful 웹 서비스 (RSETful API 라고도 한다.)는 HTTP 프로트콜과 REST의 원칙을 사용하여 구현된 웹 서비스 이다. 리소스(Resource)의 집합은 유효한 하이퍼 텍스트 표준인 모든 유효한 인터넷 미디어 유형이 될 수 있는 표준화 된 형식(일반적으로 XML 또는 JSON)으로 표현된다.

5. RESTful API 사용 이유

RESTful API는 애플리케이션 성능, 확장성, 단순성, 수정 가능성, 가시성, 이식성 및 안정성을 향상 시키기 위해 인터넷을 통해 애플리케이션을 분산 및 독립적으로 만드는데 사용된다.

6. REST 구성하는 것

👉 자원 (Resource)- URL
👉 행위 (Verb) - HTTP 메서드 (GET, POST, PUT, DELETE 등)
👉 표현 (Representations)

6-1. URL

👉 네트워크 상에서 자원이 어디 있는지 알려주기 위한 규약.

URL Request Exmple

protocol       host      resource
https://comic.naver.com/webtoon/weekday.nhn

6-2. HTTP Method

👉 HTTP 메서드 (GET, POST, PUT, DELETE)를 통해 CRUD를 할 수 있다.

HTTP 메서드CRUD역할
GETCreate리소스 생성 (쓰기)
POSTRead리소스 조회 (읽기)
PUTUpdate리소스 수정 (쓰기)
DELETEDelete리소스 제거 (삭제)

7. REST 특징

7-1. Uniform (유니폼 인터페이스)

👉 Uniform Interface URL로 지정한 리소스에 대한 조작을 통일하고 한정적인 인터페이스로 수행하는 아키텍처 스타일을 말한다.

7-2. Stateless (무상태성)

👉 REST는 무상태성 성격을 갖는다. 즉 작업을 위한 상태정보를 따로 저장하고 관리하지 않는다. 세션 정보나 쿠키 정보를 별도로 저장하고 관리하지 않기 때문에 API 서버는 들어오는 요청만을 단순히 처리하면 된다. 때문에 서비스의 자유도가 높아지고 서버에서 불필요한 정보를 관리하지 않음으로써 구현이 단순해진다.

7-3. Cacheable (캐시 가능)

👉 REST의 가장 큰 특징 중 하나는 HTTP 라는 웹 표준을 그대로 사용하기 때문에, 웹에서 사용하는 기존 인프라를 그대로 활용이 가능하다. 따라서 HTTP가 가진 캐싱 기능이 적용 가능하다.

📌HTTP 프로토콜 표준에서 사용되는 Last-Modified 태그나 E-Tag를 이용하면 캐싱 구현이 가능하다.

7-4. Self-descriptiveness (자체 표현 구조)

👉 REST의 또 다른 큰 특징 중 하나는 REST API 메세지만 보고도 이를 쉽게 이해 할 수 있는 자체 표현 구조로 되어 있다는 것이다.

7-5. Client-Server 구조

👉 REST 서버는 API 제공, 클라이언트 사용자 인증이나 컨텍스트(세션, 로그인 정보)등을 직접관리 하는 구조로 각각의 역할이 확실히 구분되기 때문에 클라이언트와 서버에서 개발해야 될 내용이 명확해지고 서로간 의존성이 줄게 된다.

7-6. 계층형 구조

👉 REST 서버는 다중 계층으로 구성될 수 있으면 보안, 로드 밸런싱, 암호화 계층을 추가해 구조상의 유연성을 둘 수 있는 PROXY, 게이트 웨이 같은 네트워크 기반의 중간 매체를 사용할 수 있게 한다.

8. REST API 디자인 가이드

👉 REST API 설계 시 가장 중요한 항목 다음의 2가지로 요약할 수 있다. 다음의 항목은 꼭 기억하길...

  • URL는 정보의 자원을 표현해야 한다.
  • 자원에 대한 행위는 HTTP Method(GET,POST, PUT, DELETE 등)로 표현한다.

0개의 댓글