네트워크
REST API
0_hailey_0
2024. 4. 12. 15:05
1. API
"Application Programming Interface" 의 약자로 소프트웨어가 다른 소프트웨어로부터 지정된 형식으로 요청, 명령을 받을 수 있는 수단이다.
예를 들어, 날씨와 관련된 서비스를 제공하는 웹 /앱 을 개발하려면, 실시간으로 날씨에 대한 정보가 필요하다.
아래와 같이 기상청에서 정해준 양식에 맞춰서, 내가 원하는 정보를 기상청 서버에 요청하면 원하는 데이터를얻을 수 있다!
{
"date" : 20240307,
"place" : "seoul",
"which" : "temperature"
}
뿐만 아니라, 웹 개발을 할 때에 벡엔드 즉 서버에서 가진 데이터를 프론트 단에서 요청을 보내면 서버에서 해당 값을 반환해준다. 이렇게 데이터 폼에서 이러한 양식으로 데이터를 주고 받자. 하고 정해줘야 하는데 그게 바로 API 이다!
이처럼 소프트웨어가 다른 소프트웨어로부터 지정된 형식으로 요청, 명령을 받을 수 있는 수단(방법)을 Application Programming Interface 줄여서 API라고 한다.
2. REST API
REST 용어에 대해 먼저 정리하면, "REpresentational State Transfer" 의 약자로 URI와 HTTP를 이용한, 통신 목적의 아키텍처 유형(스타일) 을 말한다.
REST 가 적용된 API, 정보를 주고 받아지는데 있어서 개발자들 사이에서 널리 사용되는 일종의 형식을 말한다. 즉, 이해하기 쉽고, 관리도 쉬운 API 작성 방법론이라 볼 수 있다.
3. REST 아키텍처 제약조건
1) Client-Server
- 클라이언트는 서버에 요청(Request) 메세지를 전송하고
- 서버는 요청에 대한 응답(Response) 메세지를 전송한다.
즉, 웹 아키텍처를 설계할 때 클라이언트-서버 구조를 이루어야 한다.
2) Stateless ( 비연결성 )
- 세션 등 이전 상황(문맥) 없이도 통신 가능해야 한다.
- 각 요청 간 클라이언트 컨텍스트가 서버에 저장되어서는 안된다.
- 상태가 유지되어선 안되며, 데이터를 주고 받는 것으로 끝나야한다.
3) Cache
- 서버의 응답 메세지는 캐싱(저장 후 재사용) 될 수 있어야 한다.
4) Uniform Interface
- URI 사용, HTTP 메서드 사용 등의 지정된 인터페이스를 준수해야 한다.
- 아키텍쳐를 단순화시키고 작은 단위로 분리함으로서, 클라이언트-서버의 각 파트가 독립적으로 개선될 수 있도록 해줘야 한다.
5) Layered System
- 계층 시스템 구조가 되어야 할 것. 즉, 계층별로 분리가 되어야 한다.
- 중간 계층의 기능( 로드 밸런싱, 서버 증설, 인증 시스템 도입 등) 변경 사항이 생겨도 통신에 영향을 주지 않아야 한다.
- 서버는 클라이언트가 모르게 API 서버에 여러 계층을 추가하여 유연한 구조로 개발될 수 있어야 한다.
6) Code-On-Demand
- 손쉬운 데이터 처리를 위해 서버는 클라이언트에서 실행될 스크립트를 전송할 수 있어야한다.
4. REST API 의 작동 방식
REST API는 HTTP 요청을 통해 통신함으로써 리소스 내에서 레코드(CRUD)의 작성, 읽기, 업데이트 및 삭제 등의 표준 데이터베이스 기능을 수행한다.
예를 들어, REST API는 GET 요청을 사용하여 레코드를 검색하고,
POST 요청을 사용하여 레코드를 작성하며,
PUT 요청을 사용하여 레코드를 업데이트하고,
DELETE 요청을 사용하여 레코드를 삭제한다.
특정 순간 또는 타임스탬프의 리소스 상태를 리소스 표현이라고 한다.
이러한 정보는 JSON(JavaScript Object Notation), HTML, XLT, Python, PHP 또는 일반 텍스트를 포함하여 실제로 거의 모든 형식으로 클라이언트에 전달될 수 있다.
요즘에는 JSON을 많이 사용하는데 사람과 기계가 모두 읽을 수 있고 프로그래밍 언어에 구애받지 않기 때문이다.
요청 헤더와 매개변수 역시 메타데이터, 권한 부여, URI(Uniform Resource Identifier), 캐싱, 쿠키 등의 중요한 식별자 정보를 포함하므로 REST API 호출에서 중요하. 요청 헤더와 응답 헤더는 일반적인 HTTP 상태 코드와 함께 잘 디자인된 REST API 내에서 사용된다.
reference