본문 바로가기
개발

REST API, 제대로 알고 개발하기

by hxxyeoniii 2024. 1. 31.

이번에 REST API를 연동하는 부분을 진행하게 되었다.

한번 정리하고 시작하자는 의미에서 작성!


REST란?

1. Representational State Transfer

2. SW 아키텍처의 한 형식으로, 자원을 이름으로 구분해 해당 자원의 상태를 주고 받는 모든 것을 말한다.

 

-> HTTP URI를 통해 자원을 명시하고, HTTP Method를 통해 해당 자원에 대한 CRUD를 적용하는 것을 의미

 

REST의 구성

1. 자원(Resource) : URL

   - HTTP URI

 

2. 행위(Verb) : Http Method

   - HTTP Method : GET, POST, PUT, DELETE 등

 

3. 표현(Representations)

   - 클라이언트가 자원의 상태에 대한 조작을 요청하면 서버는 이에 적절한 응답을 보냄

   - REST에서 자원은 JSON, XML, TEXT 등 여러 형태의 응답으로 나타낼 수 있다. -> 현재는 거의 JSON 사용

 

REST의 장단점

1. 장점

   - HTTP 프로토콜의 인프라를 사용하므로 REST API 사용을 위한 별도의 인프라를 구축할 필요가 없다.

   - HTTP 표준 프로토콜을 따르는 모든 플랫폼에서 사용이 가능하다.

   - 서버와 클라이언트의 역할을 명확히 분리한다.

 

2. 단점

   - 표준이 존재하지 않는다.

   - HTTP 메소드 형태가 제한적이다.

 

REST의 특징

1. 서버 - 클라이언트 구조

   - 서버 : API를 제공하고 비지니스 로직 처리 및 저장

   - 클라이언트 : 사용자 인증이나 세션, 로그인 정보 등을 관리

 

2. 무상태(Stateless)

   - HTTP 프로토콜은 Stateless 프로토콜이므로 REST 역시 무상태

   - 클라이언트의 context를 서버에 저장하지 않는다. -> 구현이 단순해진다.

   - 서버는 각각의 요청을 완전히 별개의 것으로 인식하고 처리한다. -> 각 API 서버는 클라이언트의 요청만을 단순 처리하므로 서버의 처리 방식에 일관성을 부여하고 부담이 줄어든다.

 

3. 캐시 처리 가능(Cacheable)

   - HTTP가 가진 가장 강력한 특징 중 하나인 캐싱 기능을 적용할 수 있다.

   - 캐시 사용으로 응답시간이 빨라지고 REST Server 트랜잭션이 발생하지 않아 전체 응답시간, 성능, 서버의 자원 이용률이 향상된다.

 

4. 계층화(Layered System)

   - 클라이언트는 REST API 서버만 호출한다.

   - REST Server는 다중 계층으로 구성될 수 있다. -> API Server는 순수 비지니스 로직을 수행하고 그 앞단의 보안, 사용자 인증 등을 추가해 구조상 유연성을 줄 수 있다.

   - 프록시, 게이트웨이 같은 네트워크 기반의 중간 매체를 사용할 수 있다.

 


REST API란?

* 우선 API란, 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 말한다.

 

REST API 정의

1. REST를 기반으로 서비스 API를 구현한 것

2. 최근 Open API, 마이크로 서비스 등을 제공하는 업체 대부분은 REST API를 제공한다.

 

REST API 설계 규칙

1. 슬래시 구분자(/)는 계층 관리를 나타내는데 사용한다.

2. URI 마지막 문자로 슬래시를 포함하지 않는다.

3. 하이픈(-)은 URI 가독성을 높이는데 사용한다.

4. 밑줄(_)은 URI에 사용하지 않는다.

5. URI 경로에는 소문자가 적합하다.

6. 파일확장자는 URI에 포함하지 않는다. -> 대신, Accept header를 사용한다.

 

RESTful이란?

1. RESTful은 일반적으로 REST라는 아키텍처를 구현하는 웹 서비스를 나타내기 위해 사용하는 용어이다.

2. REST API를 제공하는 웹 서비스를 'RESTful'하다고 할 수 있다.

3. RESTful은 REST를 REST답게 쓰기 위한 방법으로, 공식적으로 발표한 것은 아니다.

4. 즉, REST 원리를 따르는 시스템을 RESTful이란 용어로 지칭한다.

 

RESTful의 목적

1. 이해하기 쉽고 사용하기 쉬운 REST API를 만드는 것

2. RESTful 하지 못한 경우는?

   -> ex) CRUD 기능을 모두 POST로만 처리하는 API

   -> ex) routed에 resource, id 외의 정보가 들어가는 경우