[API] REST API
WEB API란?
웹 서버 또는 웹 브라우저를 위한 애플리케이션 프로그래밍 인터페이스
HTTP 서비스이고, 다양한 클라이언트에서 접근이 가능하도록 설계되어 있다.
HTTP 표준 접근 방식을 이용하며, 플랫폼 환경, 클라이언트 환경의 제한이 없는 서비스 구현이 가능하다.
REST API
두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스
자원을 이름으로 구분하여 해당 자원의 상태 (정보) 를 주고 받는 모든 것을 의미한다.
🤔API?
Application Programming Interface의 약자로,
프로그램들이 서로 상호 작용하는 것을 도와주는 매개체
HTTP 프로토콜의 인프라를 그대로 사용하므로, HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하다.
REST 구성 요소
- 자원(Resource) - URL
- 모든 자원에 고유한 ID가 존재하고, 자원은 서버에 존재한다.
- URI를 통해 자원을 명시하고, 구분할 수 있다.
- 행위(Verb) - HTTP Method
- POST, GET, DELETE, PUT 을 이용하여 지정한 자원에 대한 조작을 요청한다.
-
METHOD CRUD SQL 설명 POST Create INSERT 생성 GET Read SELECT 읽기 PUT Update UPDATE 갱신 DELETE Delete DELETE 삭제
- 표현 (Representation of Resource)
- 클라이언트가 서버에게 자원에 대한 조작을 요청하면 서버는 이에 대한 적절한 응답을 보낸다.
REST의 특징
Server-Client (서버-클라이언트 구조)
자원이 있는 쪽이 서버, 자원을 요청하는 쪽이 Client가 된다.
Stateless (무상태)
HTTP 프로토콜이 Stateless 프로토콜이므로 REST 역시 무상태성이다.
Client의 Context를 Server에 저장하지 않는다.
서버는 각각의 요청을 완전히 별개의 것으로 인식하고 처리한다.
Cacheable (캐시 처리 기능)
웹 표준 HTTP 프로토콜을 그대로 사용하므로, 웹에서 사용하는 기존 인프라를 그대로 활용할 수 있다.
대량의 요청을 효율적으로 처리하기 위해 캐시가 요구된다.
Layerd System (계층화)
클라이언트는 RestAPI 서버만 호출한다.
REST 서버는 다중 계층으로 구성될 수 있다.
Uniform Interface (인터페이스 일관성)
URI로 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행
HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하다.
참고 : https://hanamon.kr/rest-api/
REST API의 작동 방식
1. 클라이언트가 서버에 요청을 전송합니다.
클라이언트가 API 문서에 따라 서버가 이해하는 방식으로 요청 형식을 지정합니다.
2. 서버가 클라이언트를 인증하고, 해당 요청을 수행할 수 있는 권한이 클라이언트에 있는지 확인합니다.
3. 서버가 요청을 수신하고, 내부적으로 처리합니다.
4. 서버가 클라이언트에 응답을 반환합니다.
응답에는 요청이 성공했는지 여부를 클라이언트에 알려주는 정보가 포함됩니다.
응답에는 클라이언트가 요청한 모든 정보 또한 포함됩니다.
정리하자면, REST는 URI를 통해 자원을 표시하고 HTTP Method를 이용해 해당 자원의 행위를 정해주며,
그 결과를 받는 것을 말한다.
🔎 URL VS URI
URL
- 프로토콜: http, https, ftp 등
- 호스트네임: 도메인 or IP (서버컴퓨터의 이름 - 위치)
- URL path: 서버컴퓨터(host)에서 클라이언트가 요청한 파일 디렉토리
URI
- Identifier: 식별자, 자원 식별자, id값(index)
- URI가 URL을 포함
** URL은 서버 컴퓨터에서 클라이언트가 요청한 파일의 디렉토리를 나타내고, URI는 자원의 고유 식별자 값이다.
참고
'👩💻 Develope > Web' 카테고리의 다른 글
[Django/React] 장고와 리액트 연동 (2) (0) | 2023.10.12 |
---|---|
[Django/React] 장고와 리액트 연동 (1) (0) | 2023.10.11 |
[React] 윈도우에 리액트(React.js) 설치 (1) | 2023.10.09 |
[HTML/CSS] HTML/CSS 시작하기 (0) | 2023.10.03 |
[Webhook] 웹훅 (Webhook) 이란? (0) | 2023.06.29 |