Rest API 란?
Representational State Transfer 의 약자
API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처
REST 아키텍처 스타일을 따르는 API를 REST API
웹에서 사용되는 데이터나 자원(Resource)을 HTTP URI로 표현하고,
HTTP 프로토콜을 통해 요청과 응답을 정의하는 방식
**
리소스(Resource)란?
다양한 애플리케이션이 클라이언트에게 제공하는 정보입니다. 이미지, 동영상, 텍스트, 숫자 또는 모든 유형의 데이터
Rest API의 특징
균일한 인터페이스
4가지 아키텍처 제약조건에 따라 균일한 인터페이스를 전송
Stateless(무상태)
서버가 이전의 모든 요청과 독립적으로 모든 클라이언트 요청을 완료하는 통신 방법
Layered System(계층화 시스템)
클라이언트와 서버 사이의 다른 승인된 중개자에게 연결할 수 있으며 여전히 서버로부터도 응답을 받습니다. 서버는 요청을 다른 서버로 전달할 수도 있다.
캐시 가능성
클라이언트는 첫 번째 응답 후에 해당 이미지를 캐싱하거나 저장한 다음 캐시에서 직접 이미지를 사용
Code-On-Demand
서버는 소프트웨어 프로그래밍 코드를 클라이언트에 전송하여 클라이언트 기능을 일시적으로 확장하거나 사용자 지정
REST 성숙도 모델
0~3단계까지 균일한 인터페이스의 특징
0단계 자원에 대한 식별
이름을 지닐 수 있는 모든 정보
개념적인 대상
URI를 통해 고유한 자원을 식별해야 한다.
단순히 HTTP 프로토콜을 사용
1단계 표현을 통한 자원에 대한 조작
표현 : 특정한 상태의 자원에 대한 표현
자원은 다양한 방식으로 표현가능
웹에서 사용되는 모든 데이터나 자원(Resource)을 HTTP URI로 표현
모든 자원은 개별 리소스에 맞는 엔드포인트(Endpoint)를 사용해야하며 요청하고 받는 자원에 대한 정보를 응답으로 전달
엔드포인트 작성방법 : 리소스에 집중해 명사 형태의 단어로 작성
2단계 자기 서술적 메시지
메시지는 스스로에 대해 설명해야 한다.
클라이언트와 서버사이들의 컴포넌트들은 메시지 내용을 참고하여 적절한 작업 수행
Host 헤더에 도메인명 기재 필요
도메인명 정보의 필요성 : 가상호스트 문제 -> 하나의 IP 주소에 복수의 도메인명이 존재 가능
캐쉬 관련 헤더를 통한 캐쉬 전략 지정
클라이언트가 캐쉬를 요청할 시 서버까지 가지 않고 중간에서 반환 가능
표현을 추가로 처리하는 방법에 대한 정보를 수신
서버는 클라이언트가 리소스를 적절하게 사용할 수 있는 방법에 대한 메타데이터가 포함된 명확한 메시지를 전송
CRUD에 맞게 적절한 HTTP 메서드를 사용하는 것에 중점
관련 리소스를 클라이언트가 Location 헤더에 작성된 URI를 통해 확인할 수 있도록 하면 완벽
3단계 Hateoas(Hypermedia As The Engine Of Application State)
하이퍼미디어를 통한 앱 상태 변경
ex.) a href="http://~/~/"
작업을 완료하는 데 필요한 다른 모든 관련 리소스에 대한 정보를 수신
서버는 클라이언트가 더 많은 리소스를 동적으로 검색할 수 있도록 표현에 하이퍼링크를 넣어 전송
Open API
누구에게나 열려있는 API
API마다 정해진 이용 수칙이 있고, 그 이용 수칙에 따라 제한
API Key
이용자에게 자원에 접근할 수 있는 권한을 API Key의 형태로 제공
'Learn > HTTP&네트워크' 카테고리의 다른 글
express (0) | 2023.02.08 |
---|---|
SOP,CORS (0) | 2023.02.06 |
추가 개념 OSI 7 layer 네트워크의 7 계층 (0) | 2023.01.31 |
HTTP 기초 / AJAX / SSR과 CSR (0) | 2023.01.30 |
네트워크 기초 (0) | 2023.01.30 |