Rest API / Rest-fulFrontend/웹 관련 지식2022. 5. 30. 11:27
Table of Contents
Rest API?
- Representational State Transfer의 줄임말로, REST 아키텍처의 제약 조건을 준수하는 애플리케이션 프로그래밍 인터페이스를 의미한다.
- HTTP 통신에서 어떠한 자원에 대한 CRUD 요청을 Resource와 Method로 표현하여 특정한 형태로 전달하는 방식이다!
Rest API 구성 요소
자원 - URI
- URI (Uniform Resource Indicator)
→ URI(통합 자원 식별자)는 언제 어디서든 늘 같은 리소스(텍스트, 이미지, 비디오 등)를 보여줄 수 있도록 해주는 식별자이다. - URI는 정보의 자원을 표현해야 한다!
- URI VS URL?
- http://duckgugong/board
- http://duckgugong/board/1
행위 - HTTP Method
- CRUD 처리 과정에 올바른 HTTP Method를 사용해서 서비스에 요청을 보낸다.
- CREAT - 데이터 생성 (POST)
- READ - 데이터 조회 (GET)
- UPDATE - 데이터 수정 (PUT / PATCH)
- DELETE - 데이터 삭제 (DELETE)
표현 - Representation of Resource
- 클라이언트가 자원의 상태(정보)에 대한 조회 및 조작 요청을 하면 서버는 JSON, XML등으로 적절한 응답을 보낸다.
Rest API 특징
Uniform
- 유니폼 인터페이스, 일관된 인터페이스
- 특정 언어나 기술에 종속되지 않음
→ HTTP 표준에만 따르면 모든 플랫폼에서 사용이 가능하며 URI로 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수 하는 아키텍쳐 스타일
Stateless
- 무상태성 → 서버가 클라이언트의 상태를 저장하지 않음
- 서버에서 어떤 작업을 하기 위해 상태 정보를 기억할 필요도 없고 들어온 요청에 대하여 단순히 처리만 해주면 되기 때문에 구현이 쉽고 단순해진다.
Cacheable
- 캐시 기능을 이용할 수 있다.
- REST API는 HTTP 웹표준을 사용하기 때문에 HTTP에서 사용하는 캐시 기능을 사용할 수 있다.
Server - Client 구조
- 서버와 클라이언트의 역할이 분명하게 구분됨
- 클라이언트는 유저와 관련된 처리를, 서버는 REST API를 제공함으로서 각각의 역할이 확실하게 구분되고 일괄적인 인터페이스로 분리되어 작동할 수 있게 한다 → 서버/클라이언트 사이의 의존성이 줄어든다
Self-descriptiveness
- 자체표현 구조 → 자체 표현으로 직관적인 이해가 가능하다.
- JSON을 이용한 메세지 포멧을 이용해서 직관적으로 이해가 가능하고 REST API 메세지 만으로 그 요청이 어떠한 행위를 하는지 알 수 있다.
Layered Structure
- 계층 구조
- 클라이언트와 서버가 분리되어 있기 때문에 중간에 프록시 서버, 암호화 계층 등 중간 매체를 사용할 수 있어 자유도가 높다
Rest API 설계 규칙
- Rest API를 올바르게 설계하기 위해서는 지켜야할 몇가지 규칙이 있다.
중심 규칙
- URI는 정보의 자원(Resource)를 표현해야한다.
- 자원에 대한 행위는 HTTP Method(GET, POST, PUT DELETE, PATCH)로 표현한다. 이때, URI에 행위를 포함하지 않는다.
http://duckgugong.com/board/1
세부 규칙
1. 슬래시로(/) 계층 관계를 표현하고, 마지막에 슬래시(/)를 포함하지 않는다.
2. 언더바(_) 대신 대쉬(-)를 사용한다.
- 대쉬도 정확한 의미나 표현을 위해 단어의 결합이 불가피한 경우에만 최소한으로 사용한다
3. 소문자를 사용한다.
- 주소에서 대문자에 따라 다른 Resource로 인식되기 때문에 카멜케이스가 아니라 소문자을 이용한다.
4. 행위(Method)는 URL에 포함하지 않는다.
5. 리소스명은 동사 대신 명사를 사용한다.
- 컨트롤 자원을 의미하는 URL은 예외적으로 동사를 허용한다.
6. 파일 확장자는 포함하지 않는다.
Rest-ful API
- Rest-ful 이란, Rest API의 설계 규칙을 '올바르게'따라 설계하는 것을 말한다.
자원을 식별할 수 있어야 한다.
- URI만 보고 내가 어떤 자원을 제어하려고 하는 지 알 수 있어야 한다
행위는 명시적이야 한다.
- REST는 방법론과 같으므로 이러한 방식이 강제되지는 않지만 이를 따르지 않으면 Rest-ful 하다고 할 수 없다.
자기 서술적이여야 한다.
- 데이터에 대한 메타정보만 가지고도 어떤 종류의 데이터인지, 데이터를 위해서 어떤 애플리케이션을 실행해야 하는지를 알 수 있어야 한다.
HETEOS
- Hypermedia as the Engine of Application State
- 클라이언트 요청에 대해 응답할 때, 추가적인 정보를 제공하는 링크를 포함할 수 있어야 한다.
'Frontend > 웹 관련 지식' 카테고리의 다른 글
브라우저 작동 원리/Reflow+Repaint/Virtual dom (1) | 2022.09.13 |
---|---|
SOP, CORS (0) | 2022.09.13 |
JWT TOKEN🍗 (0) | 2022.05.23 |
쿠키🍪와 세션/캐시 + 웹 스토리지 (0) | 2022.05.17 |
Proxy (Forward, Reverse) (0) | 2022.02.15 |
@덕구공 :: Duck9s'
주니어 개발자에욤
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!