[프로젝트 기획 - API 설계] RESTFUL API란?
프로젝트 기획을 마무리 하면서 api 명세를 작성하는 과정에서 API 설계 방법에 대해 공부하고 정리해보았다.
1. REST란?
- Representational State Transfer
- 자원을 이름으료 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미한다.
- = 자원의 표현에 의한 상태 전달
- 자원의 표현
학생 정보 = students - 상태 전달
= 자원의 정보 전달
json, XML을 통해 데이터를 주고 받음
- 자원의 표현
- 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일이다.
- REST는 네트워크 상에서 클라이언트와 서버 사이의 통신 방식 중 하나이다.
HTTP URI (Uniform Resource Identifier)를 통해 자원을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것
2. REST의 장단점
장점
- HTTP 프로토콜의 인프라 사용 -> REST API를 위한 별도의 인프라를 구축할 필요 없음
- HTTP 프로토콜 표준 활용
- 서버와 클라이언트의 역할 분리
단점
- 표준이 존재하지 않는다.
- 사용할 수 있는 메소드가 4가지 밖에 없다.
HTTP 메소드 형태가 제한적이다. - 구형 브라우저가 제대로 지원 못해주는 부분이 존재
- PUT, DELETE 를 사용하지 못하는 것
- pushState를 지원하지 않는 점
3. REST가 필요한 이유
서버 프로그램은 다양한 브라우저와 아이폰, 안드로이드 같은 모바일 디바이스에서도 통신이 가능해야 한다.
-> 멀티플랫폼 지원을 위해
4. REST 구성 요소
- 자원: URI
- 모든 자원에 고유한 ID가 존재 ( = /groups/:group_id )
- 행위: HTTP Method
- GET, POST, PUT, DELETE
- 표현: 자원 표현
- json, xml을 통해 데이터를 주고받는 것이 일반적
- 하나의 자원은 JSON, XML, TEXT, RSS 등 여러 형태로 표현됨
5. REST 의 특징
1 ) Uniform 인터페이스
URI 로 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행하는 아키텍처 스타일을 말한다.
2 ) Stateless (무상태성)
작업을 위한 상태정보를 따로 저장하고 관리하지는 않는다.
API 서버는 들어오는 요청만을 처리하면 된다.
3 ) Cacheable
HTTP를 그대로 사용하기 때문에, HTTP가 가진 캐싱 기능을 적용할 수 있다.
Last-Modified 태그 / E-Tag를 이용하면 캐싱 구현이 가능
4 ) Self-descriptiveness
자체 표현 구조
REST API 메시지만 보고도 이를 쉽게 이해할 수 있는 자체 표현 구조로 되어 있다는 것
5 ) Client - Server 구조
REST 서버는 API 제공, 클라이언트는 사용자 인증, 로그인 정보, 세션 등을 직접 관리하여 프론트와 백의 역할이 구분되어 서로간 의존성이 줄어든다.
6 ) 계층형 구조
REST 서버는 다중 계층으로 구성될 수 있으며 보안, 로드밸런싱, 암호화 계층을 추가해 구조상의 유연성을 둘 수 있고 프록시, 게이트웨이 같은 네트워크 기반의 중간 매체 사용 가능
REST API 제대로 알고 사용하기 : NHN Cloud Meetup
REST API 제대로 알고 사용하기
meetup.toast.com
gmlwjd9405.github.io/2018/09/21/rest-and-restful.html
[Network] REST란? REST API란? RESTful이란? - Heee's Development Blog
Step by step goes a long way.
gmlwjd9405.github.io