Rest API란?

category 백엔드/프로그래밍 기법 2022. 4. 11. 11:32
728x90
반응형

REST란? 

REST (Representational State Transfer)는 웹의 장점을 최대한 활용할 수 있는 네트워크 기반의 아키텍처이다.
로이 필딩(Roy Fielding)의 2000년 박사학위 논문에서 소개되었다. 


HTTP와 URI 기반으로 자원에 접근할 수 있도록 제공하는 애플리케이션 개발 인터페이스이다. 
기본적으로 개발자는 HTTP 메소드와 URI 만으로 인터넷에 자료를 CRUD 할 수 있다.

 

 

출처 : https://shareurcodes.com/blog/creating%20a%20simple%20rest%20api%20in%20php

 

 

REST 구성요소

메소드

출처 : https://www.edureka.co/blog/what-is-rest-api/

 

리소스

모든 리소스를 명사로 표현한다.

다음과 같은 예제로 정의할 수 있다.

 

생성

유저를 생성한다.

HTTP POST, http://sample.com/user
{
    "name" : "yscho",
    "job" : "developer"
}

조회

유저를 조회한다.

HTTP POST, http://sample.com/user
{
    "name" : "yscho",
    "job" : "developer"
}

변경

유저를 변경한다.

HTTP POST, http://sample.com/user
{
    "name" : "yscho",
    "job" : "developer"
}

삭제

유저를 삭제한다.

HTTP POST, http://sample.com/user
{
    "name" : "yscho",
    "job" : "developer"
}

※ 직관적으로 예제를 표현하기 위해서 <User ID>를 사용하였을 뿐 유니크 한 ID http://sample.com/user/<UniqueID> 를 실무에서는 많이 사용한다.

 

메세지

JSON 메세지 형태로만 생각하는데 JSON은 메세지 중 하나의 형태일뿐 XML 등 다른 여러가지 형태로 표현이 가능하다.

 

 

REST 특징

인터페이스 일관성 (Uniform Interface)

HTTP + JSON 으로 인터페이스 스타일을 정의했다면 Python Django나 Java Spring 등의 플랫폼, 언어에 기술에 종속 받지않고 모든 플랫폼에 사용할 수 있는 일관성이 있어야된다는 것이다.

무상태/스테이트리스 (Stateless)

사용자나 클라이언트의 컨텍스트를 서버에 유지하지 않는다는 의미로 HTTP 세션과 같은 컨텍스트 저장소에 상태 정보를 저장하지 않는 것을 의미한다.
상태 저장을 하지 않으면 API 서버는 요청받는 메세지만 처리하면 되므로 세션과 같은 컨텍스트 정보를 신경 쓸 필요가 없어진다.

캐싱 (Cacheable)

HTTP 웹 표준을 사용하기때문에 인프라도 그대로 활용할 수 있다.
HTTP 프로토콜 표준에서 E-Tag, Last-Modified 태그등을 활용하여 캐시 로직을 쉽게 구현할 수 있다.
캐싱은 클라이언트-서버 간 상호작용을 부분적으로 또는 완전하게 제거하여 확장성과 성능을 향상시킨다.

서버/클라이언트 (Client-Server)

REST 서버는 API를 사용하여 비지니스 로직 및 저장에 중점을 두고 클라이언트는 사용자 인증, 로그인, 세션 등을 직접 관리하고 책임지는 역할로 나누어 각각의 역할이 활실히 구분되게 한다.

계층구조 (Layered system)

클라이언트는 보통 대상 서버에 직접 연결되었는지, 또는 중간 서버를 통해 연결되었는지를 알 수 없다. 
클라이언트는 REST API 서버만 호출하므로 그 앞단에 사용자 인증, 암호화, 로드 밸런싱 등의 계층을 추가해서 유연성을 둘 수 있다.

코드 온디맨드 - 옵션 (Code on demand)

자바 애플릿이나 자바스크립트의 제공을 통해 서버가 클라이언트가 실행시킬 수 있는 로직을 전송하여 기능을 확장시킬 수 있다.
REST API는 일반적으로 정적 리소스를 전송하지만, 특정한 경우에는 응답에 실행 코드(예: Java 애플릿)를 포함할 수도 있습니다. 이러한 경우에, 코드는 요청 시에만 실행되어야 한다.

 

 

REST API 디자인 가이드

REST API를 URI만 봐도 직관적으로 이해할 수 있도록 만들어야한다. 

잘못된 표현

HTTP 메소드를 활용하여 작성해야하는데 get, set을 URL에 붙이는 경우는 좋지 않은 예이다.

HTTP POST /getStudent
HTTP POST /setStudent

올바른 표현

첫번째는 students (학생들)라는 복수명사를 활용하여 학생들 리스트를 조회 (GET) 한다는 의미이고

두번째는 student (학생) 중에 bob 이라는 이름의 학생을 변경 (POST) 한다는 의미이다.

HTTP GET /students
HTTP POST /student/bob
728x90
반응형