티스토리 뷰
REST(Representational State Transfer)ful API : REST형식의 API
자원(resource)의 표현(representation) 에 의한 상태 전달
*API란?
API란 "Application Programming Interface"의 약자
응용 프로그램이 다른 응용 프로그램과 상호 작용할 수 있도록 인터페이스를 제공하는 소프트웨어 기술
API는 소프트웨어 컴포넌트 간의 상호 작용을 가능하게 하며, 프로그래머가 응용 프로그램을 개발할 때 다른 프로그램의 기능을 활용할 수 있도록 해준다.
REST 구성
HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.
Resource
자원 : 데이터가 리소스(Resource)라는 개념으로 표현 ex.사용자 정보, 상품 정보, 주문 정보
URI (Uniform Resource Identifier)
리소스를 식별하기 위한 고유한 식별자로 URI를 사용
ex. https://example.com/users/123
* 왜 URI가 필요한가?
URI는 자원을 나타내는 문자열.
RestAPI는 URI를 사용하여 클라이언트가 서버에서 제공하는 자원에 접근할수있도록 한다.
URI를 사용하여 클라이언트가 자원을 식별하고 서버에서 해당자원을 검색할 수 있다.
HTTP 메서드
HTTP 메소드는 자원에 대한 작업을 수행하기 위해 사용됩니다.
-> GET, POST,PUT,DELETE
표현(Representation)
RESTful 웹 서비스에서는 자원의 상태를 표현하기 위해 다양한 표현 방법을 사용
ex, JSON, XML 등의 형식으로 자원의 상태를 표현
상태
RESTful 웹 서비스에서는 클라이언트와 서버 간에 상태 전이(State Transfer)가 이루어진다.. 클라이언트는 HTTP 요청을 통해 서버에 요청을 보내고, 서버는 HTTP 응답을 통해 클라이언트에게 결과를 반환한다.
ex.
- 데이터가 요청되어지는 시점에서 자원의 상태(정보)를 전달한다.
- JSON 혹은 XML를 통해 데이터를 주고 받는 것이 일반적이다.
- 월드 와이드 웹(www)과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 개발 아키텍처의 한 형식
- REST는 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일이다.
- REST는 네트워크 상에서 Client와 Server 사이의 통신 방식 중 하나이다.
*참고 CRUD
- Create : 생성(POST)
- Read : 조회(GET)
- Update : 수정(PUT)
- Delete : 삭제(DELETE)
REST 특징
- client-server
- stateless
클라이언트의 모든 요청에는 서버가 요청을 완료하는 데 필요한 모든 데이터가 포함되어야 합니다.
각 요청은 독립적으로 호출됩니다.
- cache
유사한 요청에 대한 데이터를 재활용하려면 응답 데이터를 캐시할 수 있어야 합니다.
이렇게 하면 클라이언트-서버 상호 작용이 줄어들어 성능이 향상되고 시간이 절약됩니다.
- uniform interface
REST API에는 시스템 아키텍처를 단순화하고 각 부분이 독립적으로 발전할 수 있는 균일한 인터페이스가 필요
- layered system
각 계층이 후속 계층 외부에서 상호 작용할 수 없는 구성 요소인 클라이언트-서버 시스템에 추가 계층이 있음.
이러한 계층은 보안, 부하 분산 및 확장성과 같은 추가 기능을 제공할 수 있습니다.
- code-on-demand (optional)
정적 XML 또는 JSON 데이터를 반환하는 것 외 서버가 실행 가능한 코드를 제공-> 클라이언트 기능 확장 허용
RESTful API 쓰는 이유
- 플랫폼 독립성 : HTTP 프로토콜 기반으로 하기 때문에 특정 플랫폼에 종속되지 않는다 -> 다양한 플랫폼에서 구현,사용 가능
- 확장성 : 리소스 단위로 설계가 되므로 필요한 경우 새로운 리소스를 추가 -> API를 더욱 유연하게 해준다.
- 간결성 : HTTP 메서드를 사용하여 데이터를 처리하기때문에 이해하기 쉽다.
- 캐시처리 : HTTP의 캐시처리 기능을 활용할 수 있기 때문에 빠른 성능 보장
- 보안성 : HTTPS를 사용하여 데이터를 암호화하고 보호
- 다양한 포맷 지원 : JSON,XML,HTML등 다양한 포맷을 지원하여 데이터를 다양한 형태로 전송할 수 있다.
RESTful API 와 REST의 차이
REST API : REST 아키텍처 스타일을 따르지 않으면서 RESTful API처럼 보이는 API
RESTful API : REST 아키텍처 스타일을 엄격하게 따르는 API
REST API
ex. GET 메소드를 사용하여 자원을 생성하거나, DELETE 메소드를 사용하여 자원을 조회하는 경우-> 문제 발생
(원래는 POST를 사용하여 자원을 생성, GET를 사용하여 자원을 조회)
Restful API
RESTful API는 자원을 URI로 표현
-> HTTP 메소드를 사용하여 자원에 대한 작업을 수행
-> 자원의 상태를 표현(JSON, XML 등)
*출처
https://lo-victoria.com/a-deep-look-into-restful-apis
http://www.incodom.kr/RestFul_API
'Network' 카테고리의 다른 글
[Network] URL vs UR vs URN (0) | 2023.03.02 |
---|---|
[Network] 브라우저에 url을 입력하면 어떻게 되는가? (0) | 2023.03.02 |
[Network] HTTP 개념 (0) | 2020.04.16 |