Step-by-Step
REST API에 대한 이해 본문
무엇이든 사용하기 전에 기본 개념을 제대로 알고 사용하는 것이 장기적으로 도움이 되는 것 같다
그리고 한 번 배운 내용을 평생 기억할 순 없으니 블로그에 작성하여 잊을때마다 복습하려고 한다
REST
- REST : REpresentational State Transfer
- 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것
1) HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource) 명시
2) HTTP Method(POST, GET, PUT, DELETE)를 사용하여
3) 해당 자원에 대한 CRUD Operation 적용
- 자원 기반 구조 설계의 중심에 Resource가 있고, HTTP Method를 통해 Resource를 처리하도록 설계된 아키텍처
- 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일
REST 구성
1. 자원(Resource) : URI
- 모든 자원에 고유한 ID가 존재하고, 이 자원은 서버에 존재
- 자원을 구별하는 ID는 HTTP URI 임 ex) /Resource/Sub/:id 등등
- Client는 URI를 통해 자원을 지정하고 해당 자원의 상태에 대한 조작을 서버에 요청
2. HTTP Method : 행위(Verb)
- HTTP Protocol의 Method 사용 : GET, POST, PUT, DELETE 등
3. 표현 : Representation of Resource
- Client가 자원의 상태에 대한 조작을 요청하면, Server가 적절한 응답(Representation) 보냄
- REST에서 하나의 자원은 JSON, XML, TEXT, RSS 등 여러 형태의 Representation으로 나타냄
※ 일반적으로 JSON, XML 사용
API
- API : Application Programming Interface
- 응용프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스
- Application : 고유한 기능을 가진 모든 소프트웨어
- Interface : 두 애플리케이션 간의 서비스 계약 / 통신하는 방법 정의
API vs 라이브러리 vs 프레임워크
API | 라이브러리 | 프레임워크 |
- 응용프로그램을 만드는데 필요한 연결장치 및 매개체 - 정의된 프로토콜을 기반으로 상호 작용을 할 수 있도록 일종의 약속된 시스템 - 컴포넌트를 사용한 규약, 호출을 위한 수단, 구현 로직 없음 |
- 응용 프로그램 개발을 위해 필요한 기능을 모아 놓은 소프트웨어 - 기능에 대한 도구 또는 함수들의 집합 - API들을 기반으로 개발자에게 기능을 제공할 수 있도록 실제 구현된 구현체 - 컴포넌트 자체, 구현 로직이 존재함 |
- 응용프로그램이나 소프트웨어 구현을 수월하게 하기 위해 제공된 소프트웨어 환경 - 완성된 제품이 아닌 완성된 제품을 만들기 위해 개발자를 도와주고 기반이 되는 역할 - 소프트웨어의 특정 문제를 해결하기 위해 상호 협력하는 클래스와 인터페이스 집합 |
1) 구현 로직의 유무
- API : 컴포넌트를 사용하는 규약 및 호출을 위한 수단으로서 구현 로직 필요 없음
- 라이브러리 : 컴포넌트 자체로서 구현 로직이 존재
2) 응용 프로그램의 컨트롤
- 라이브러리 : 개발자가 코드를 컨트롤 / 개발자가 라이브러리 호출
- 프레임워크 : 개발자가 프레임워크의 규칙에 따라 코딩 / 프레임워크가 개발자 호출
REST API
- REST 아키텍처의 제약 조건을 준수하는 애플리케이션 프로그래밍 인터페이스
[참조]
https://velog.io/@somday/RESTful-API-%EC%9D%B4%EB%9E%80
https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html
'IT 기술' 카테고리의 다른 글
HTTP 상태 코드 (Http Status Code) (0) | 2023.02.18 |
---|---|
[Kafka] 아파치 카프카에 대한 이해 (0) | 2022.05.21 |
클라우드 강의 노트 (0) | 2022.02.23 |
SSH에 대한 이해 (0) | 2022.02.23 |
클라우드 컴퓨팅(Cloud Computing)에 대한 이해 (0) | 2022.02.23 |