REST API

Dongwoo Joo·2023년 3월 29일
3

학습 내용

중요한 내용(기억할 큰 범위)만 챕터 당 2~3줄로 작성해보자.
추가적으로 알고 싶은 내용은 좀 길게 작성해보자
(역사, 이걸 왜 만들었고, 왜 사용하는지 등)

REST API

REST API란?

Representational State Transfer
웹에서 사용되는 data, resource를 HTTP URI로 표현하고, HTTP 프로토콜을 통해 요청과 응답을 정의하는 방식(특정 기술이 아닌 모범 사례)

히스토리

REST(Representational State Transfer) API는 웹 기반 API를 개발하고 노출하는 방법으로 점차 대중화되고 있다. REST API는 단순하고 유연하며 확장 가능하도록 설계되었으며 World Wide Web의 기반이 되는 HTTP 프로토콜을 기반으로 한다.

역사는 HTTP 프로토콜이 처음 개발된 초기 인터넷으로 거슬러 올라간다. 2000년대 초 컴퓨터 과학자이자 HTTP 프로토콜의 저자 중 한 명인 Roy Fielding은 단순하고 확장 가능한 웹 기반 API를 설계하는 방법으로 REST 아키텍처 스타일을 개발했다.

XML을 기반으로 하고 종종 복잡하고 사용하기 어려운 기존 SOAP(Simple Object Access Protocol) 웹 서비스의 일부 제한 사항을 해결하도록 설계되었다.

JSON(JavaScript Object Notation) 및 XML과 같은 단순하고 가벼운 형식을 사용하여 데이터를 전송하며 웹 브라우저에서 모바일 장치에 이르기까지 다양한 클라이언트에서 쉽게 사용할 수 있다.

주요 이점 중 하나는 확장성이다.
널리 사용되고 이해하기 쉬운 표준인 HTTP 프로토콜을 기반으로 하기 때문에 대량의 트래픽과 데이터를 처리하도록 쉽게 확장할 수 있다.
따라서 높은 수준의 사용을 처리할 수 있어야 하는 웹 기반 애플리케이션 및 서비스를 구축하는 데 이상적이다.

또 다른 장점은 단순성이다.
GET, POST, PUT 및 DELETE와 같은 잘 정의되고 표준화된 작업 집합을 사용하여 리소스를 조작하므로 개발자가 API를 쉽게 구축하고 사용할 수 있습니다.
또한 상태 비저장이므로 쉽게 캐싱하고 성능을 최적화할 수 있으므로 트래픽이 많은 애플리케이션 및 서비스에 이상적이다.

요약

REST API는 단순하고 유연하며 확장 가능한 웹 기반 API를 개발하고 공개하는 방법으로 널리 사용되었다. HTTP 프로토콜과 초기 인터넷에 뿌리를 두고 있으며 현대 웹 기반 애플리케이션 및 서비스의 핵심 부분으로 발전했다.

히스토리 중 모르는 단어

  • SOAP(Simple Object Access Protocol)
    SOAP는 서로 다른 응용 프로그램 간에 구조화된 정보를 교환하기 위한 프로토콜입니다. XML을 데이터 교환 형식으로 사용하며 일반적으로 HTTP 또는 기타 응용 프로그램 계층 프로토콜을 통해 실행됩니다.

  • 클라이언트
    클라이언트는 서버에서 서비스 또는 리소스를 요청하는 프로그램 또는 응용 프로그램입니다. REST API의 맥락에서 클라이언트는 웹 브라우저, 모바일 앱 또는 웹 기반 API와 상호 작용해야 하는 기타 소프트웨어일 수 있습니다.

  • XML(Extensible Markup Language)
    XML은 데이터 저장 및 전송에 사용되는 마크업 언어입니다. HTML과 유사하지만 더 유연하며 거의 모든 종류의 데이터 구조를 나타내는 데 사용할 수 있습니다. XML은 SOAP 웹 서비스를 비롯한 웹 서비스에서 자주 사용됩니다.

  • JSON(JavaScript Object Notation)
    JSON은 사람이 읽고 쓰기 쉽고 기계가 구문 분석하고 생성하기 쉬운 경량 데이터 형식입니다. 웹 기반 API에서 XML의 대안으로 자주 사용되며 대부분의 프로그래밍 언어에서 지원됩니다.

  • Caching
    캐싱은 나중에 더 빨리 검색할 수 있도록 임시 저장 위치(캐시)에 데이터를 저장하는 프로세스입니다. REST API의 맥락에서 캐싱은 서버에 요청해야 하는 요청 수를 줄여 성능을 향상시킬 수 있습니다.

REST API 성숙도 모델

REST API를 잘 적용하기 위한 모델.
level 0 ~ 3 까지 있음.
level 3 까지 적용 -> REST API
level 2 까지 적용 -> HTTP API

level 0

HTTP 프로토콜을 사용하는 것

level 1

개별 리소스와의 통신 준수
REST API는 웹에서 사용되는 모든 데이터나 리소스를 HTTP URI로 표현하는데, 모든 리소스는 개별 리소스에 맞는 Endpoint를 사용해야 하며, 요청하고 받는 리소스에 대한 정보를 응답으로 전달해야 한다.

Endpoint?
REST API에서 endpoint는,
클라이언트가 상호 작용할 수 있는 특정 리소스 또는 작업의 URL을 나타낸다.
endpoint를 사용하면 클라이언트가 서버에 요청해서 데이터에 엑세스하고 조작할 수 있다.

endpoint는 2개의 Main part로 구성된다.
The base URL: API의 모든 endpoint에 대한 공통 접두사이며, 서버를 식별하는데 사용된다.
the endpoint path: endpoint 경로는 클라이언트가 상호 작용하려는 특정 리소스 또는 작업이다.

level 2(HTTP 동사 수준)

HTTP 메서드 원칙 준수
요청 상황에 맞는 적절한 HTTP 메서드를 사용한다.
4가지 HTTP 메서드를 사용해서 CRUD(create, read, update, delete)를 표현한다.

level 3

HATEOAS 원칙 준수
HATEOAS라는 하이퍼미디어 컨트롤을 적용한다.
(Hypermedia As The Engine Of Application State)

응답에 링크 요소가 들어간다.
링크 요소는 응답을 받은 다음 다양한 액션을 위한 하이퍼미티어 컨트롤을 포함한다.

Open API, API key

Open API

누구나 사용할 수 있도록 공개된 API이다.
정부에서 제공하는 API는 공공테이터 포털에 접속해서 확인할 수 있다.

API Key

*chat gpt 참조
API에 대한 요청을 인증하는데 사용되는 고유 식별자이다.
본질적으로 API를 요청하고, API 리소스에 대한 엑세스 권한을 부여하는 애플리케이션 또는 사용자를 식별하는데 사용되는 보안 코드이다.

API 키는 소프트웨어 애플리케이션이 서로 통신하는 방법인 API(Application Programming Interface)에 대한 액세스를 인증하고 제어하는 데 사용된다.

히스토리

API는 컴퓨터 네트워킹 초기부터 사용되어 왔으며 처음에는 서로 다른 컴퓨터 시스템이 데이터를 교환할 수 있도록 하는 데 사용되었다.

API가 널리 보급되고 널리 사용됨에 따라 무단 사용을 방지하고 노출된 리소스를 보호하기 위해 API에 대한 액세스를 제어해야 했다. API 키는 요청을 인증하고 API에 대한 액세스를 제어하는 방법으로 도입되었다.

API 키는 인터넷과 웹 기반 애플리케이션이 더욱 복잡해짐에 따라 시간이 지남에 따라 진화했다. 초기에는 API 키가 요청 URL 또는 헤더에 포함된 간단한 영숫자 코드인 경우가 많았다. 그러나 API가 더욱 정교해지고 무단 액세스의 위험이 증가함에 따라 보다 고급 인증 및 액세스 제어 메커니즘이 개발되었다.

오늘날 API 키에는 암호화, 디지털 서명 및 토큰 기반 인증과 같은 다양한 보안 기능이 포함될 수 있다. API 내의 특정 리소스 또는 작업에 대한 액세스를 제어하는 데 사용할 수 있으며 필요에 따라 액세스를 관리하기 위해 취소하거나 다시 생성할 수 있다.

요약

API Key는 API에 대한 액세스를 보호하고 제어하는 데 필수적인 부분이며, 인터넷 및 웹 기반 애플리케이션의 변화하는 요구 사항을 충족하기 위해 시간이 지남에 따라 발전했다.
최신 소프트웨어 시스템의 보안 및 안정성을 관리하는 데 필수적인 도구이다.

profile
pursue nature

0개의 댓글