Rest API
Updated:
Goal
- REST의 개념을 이해한다.
- REST의 특징을 이해한다.
- REST API의 개념을 이해한다.
- REST API의 설계 규칙을 이해한다.
- RESTful의 개념을 이해한다.
REST란?
- “Representational State Transfer” 의 약자
- 자원의 표현으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미
- 자원(resource)의 표현(representation)?
- 자원 : 해당 소프트웨어가 관리하는 모든 것
- ex) 문서, 데이터 등..
- 자원의 표현 : 그 자원을 표현하기 위한 이름
- ex) DB의 학생 정보가 표현하기 위한 이름
- 상태(정보) 전달
- 데이터가 요청되어지는 시점에서 자원의 상태를 전달
- JSON 혹은 XML를 통해 데이터를 주고 받는 것이 일반적
- 자원(resource)의 표현(representation)?
- REST는 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일
- REST는 네트워크 상에서 Client와 Server 사이의 통신 방식 중 하나
REST의 구체적인 개념
- HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미
- CRUD Operation
- Create : 생성(POST)
- Read : 조회(GET)
- Update : 수정(PUT)
- Delete : 삭제(DELETE)
- HEAD : haeder 정보 조회(HEAD)
REST의 장단점
- 장점
- HTTP 프로트콜의 인프라를 그대로 사용 -> REST API 사용을 위한 별도의 인프라를 구축할 필요 없음..
- HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용 가능
- Hypermedia API의 기본을 충실히 지키면서 범용성을 보장
- REST API 메시지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 쉽게 파악할 수 있음
- 단점
- 표준이 존재하지 않는다
- 사용할 수 있는 메소드가 4가지 밖에 없다
REST 구성 요소
- 자원(Resource) : URI
- 모든 자원을 고유한 ID가 존재하고, 이 자원은 Server에 존재한다
- 자원을 구별하는 ID는 ‘/groups/:group_id’와 같은 HTTP URI이다
- Client는 URI를 이용해 자원을 지정하고 해당 자원의 상태에 대한 조작을 Server에 요청한다
- 행위(Verb) : HTTP Method
- HTTP 프로토콜의 Method를 사용한다
- HTTP 프로토콜을 GET, POST, PUT, DELETE와 같은 메서드를 제공한다
- 표현(Representation of Resource)
- Clinet가 자원의 상태에 대한 조작을 요청하면 Server는 이에 적절한 응답을 보낸다
- REST에서 하나의 자원은 JSON, XML, TEXT, RSS 등 여러 형태의 Representation으로 나타내어 질 수 있다
- JSON 혹은 XML를 통해 데이터를 주고 받는 것이 일반적이다
REST API란?
- API(Application Programming Interface)란
- 데이터와 기능의 집합을 제공하여 컴퓨터 프로그램간 상호작용을 촉진하며, 서로 정보를 교환 가능 하도록 하는 것
- REST API의 정의
- REST 기반으로 서비스 API를 구현한 것
- 최근 OpenAPI(누구나 사용 가능한 API : 구글 맵, 공공 데이터 등), 마이크로 서비스(하나의 큰 애플리케이션을 여러 개의 작은 애플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍처) 등을 제공하는 업체 대부분은 REST API를 제공한다
REST API 특징
- 사내 시스템들도 REST 기반으로 시스템을 분산해 확장성과 재사용성을 높여 유지보수 및 운용을 편리하게 할 수 있다
- HTTP를 지원하는 프로그램 언어로 클라이언트, 서버를 구현할 수 있다
REST API 응답 상태 코드
- 1XX : 전송 프로토콜 수준의 정보 교환
- 2XX : 클라이언트 요청이 성공적으로 수행됨
- 3XX : 클라이언트는 요청을 완료하기 위해 추가적인 행동을 취해야 함
- 4XX : 클라이언트의 잘못된 요청
- 5XX : 서버쪽 오류로 인한 상태코드
References
- https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html
- https://meetup.toast.com/posts/92
Leave a comment