Step-by-Step

REST API에 대한 이해 본문

IT 기술

REST API에 대한 이해

희주(KHJ) 2022. 4. 29. 19:04

무엇이든 사용하기 전에 기본 개념을 제대로 알고 사용하는 것이 장기적으로 도움이 되는 것 같다

그리고 한 번 배운 내용을 평생 기억할 순 없으니 블로그에 작성하여 잊을때마다 복습하려고 한다

 

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

https://dkswnkk.tistory.com/517

Comments