REST API
- 개념
- REST는 Representational State Transfer의 줄임말
- 자원(resource)의 이름/표현(representation)으로 구분하여 상태를 주고받는 모든 것을 의미
- REST API: REST 아키텍처의 제약 조건을 준수하는 애플리케이션 프로그래밍 인터페이스
- 즉, REST란
- HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고,
- HTTP Method(POST, GET, PUT, DELETE)를 통해
- 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.
- 구성
- 표현(Representations)
- 자원(RESOURCE) - URI
- 행위(Verb) - HTTP METHOD
- POST : POST를 통해 해당 URI를 요청하면 리소스를 생성
- GET: GET를 통해 해당 리소스를 조회 → 리소스를 조회하고 해당 도큐먼트에 대한 자세한 정보를 가져온다.
- PUT: PUT를 통해 해당 리소스를 수정
- DELETE: DELETE를 통해 리소스를 삭제
REST API 디자인 가이드
- 1. URI는 정보의 자원을 표현해야 한다.
- 2. 자원에 대한 행위는 HTTP Method(POST, GET, PUT, DELETE)로 표현한다.
- RESTful하게 API를 디자인 하는 것
- 리소스 와 행위 를 명시적이고 직관적으로 분리한다.
- 리소스는 URI로 표현되는데 리소스가 가리키는 것은 명사로 표현되어야 한다.
- 행위는 HTTP Method로 표현하고, GET(조회), POST(생성), PUT(기존 entity 전체 수정), PATCH(기존 entity 일부 수정), DELETE(삭제)을 분명한 목적으로 사용한다.
- Message 는 Header 와 Body 를 명확하게 분리해서 사용한다.
- Entity 에 대한 내용은 body 에 담는다.
- 애플리케이션 서버가 행동할 판단의 근거가 되는 컨트롤 정보인 API 버전 정보, 응답받고자 하는 MIME 타입 등은 header 에 담는다.
- header 와 body 는 http header 와 http body 로 나눌 수도 있고, http body 에 들어가는 json 구조로 분리할 수도 있다.
- API 버전을 관리한다.
- 환경은 항상 변하기 때문에 API 의 signature 가 변경될 수도 있음에 유의하자.
- 특정 API 를 변경할 때는 반드시 하위호환성을 보장해야 한다.
- 서버와 클라이언트가 같은 방식을 사용해서 요청하도록 한다.
- 브라우저는 form-data 형식의 submit 으로 보내고 서버에서는 json 형태로 보내는 식의 분리보다는 json 으로 보내든, 둘 다 form-data 형식으로 보내든 하나로 통일한다.
- 다른 말로 표현하자면 URI 가 플랫폼 중립적이어야 한다.
- 리소스 와 행위 를 명시적이고 직관적으로 분리한다.
REST API의 장단점
- 장점
- Open API 를 제공하기 쉽다
- 멀티플랫폼 지원 및 연동이 용이하다.
- 원하는 타입으로 데이터를 주고 받을 수 있다.
- 기존 웹 인프라(HTTP)를 그대로 사용할 수 있다.
- 단점
- 사용할 수 있는 메소드가 4 가지 밖에 없다.
- 분산환경에는 부적합하다.
- HTTP 통신 모델에 대해서만 지원한다.
출처 링크
https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Development_common_sense
'IT > CS 공부' 카테고리의 다른 글
| [CS] 트리 (0) | 2022.06.11 |
|---|---|
| [CS] 해시테이블 (0) | 2022.05.01 |
| [CS] Servlet (0) | 2022.04.01 |
| [CS] MVC (0) | 2022.04.01 |
| [기술 면접 대비] Spring Framework (0) | 2022.03.08 |