REST API

wldbs._.·2024년 8월 23일
1

REST API & Go

목록 보기
5/5
post-thumbnail

REST API

참고 사이트 + ChatGPT
[네트워크] REST API란? REST, RESTful이란?
IBM-REST API란 무엇인가
AWS-RESTful API란 무엇인가
AppMaster-REST API


1. API란?

애플리케이션이나 서비스가 다른 애플리케이션이나 서비스 내의 리소스에 액세스할 수 있도록 하는 메커니즘

  • 서로 다른 응용 프로그램 간의 상호 작용 및 통신을 허용하는 기능과 규칙을 제공
  • 리소스에 액세스하는 애플리케이션이나 서비스가 클라이언트
  • 리소스를 포함하는 애플리케이션이나 서비스는 서버

"API는 Application Programing Interface라는 용어로써, 어떠한 응용프로그램에서 데이터를 주고 받기 위한 방법"

"소프트웨어 응용 프로그램에서 다른 소프트웨어 구성 요소 또는 서비스와 상호 작용하기 위한 인터페이스를 제공하는 프로그래밍 기술"

API의 맥락에서

  • '애플리케이션': 고유한 기능을 가진 모든 소프트웨어, 특정한 업무를 수행하기 위해 개발된 응용 소프트웨어
  • '프로그래밍': 컴퓨터에 부여하는 명령을 만드는 작업. 수식이나 작업을 컴퓨터에 알맞도록 정리해서 순서를 정하고 컴퓨터 특유의 명령코드로 고쳐 쓰는 작업
  • '인터페이스': 두 애플리케이션 간의 서비스 계약 (요청과 응답을 사용하여 두 애플리케이션이 서로 통신하는 방법을 정의), 사물과 사물 사이 또는 사물과 인간 사이의 경계에서, 상호 간의 소통을 위해 만들어진 물리적 매개체나 통신 규칙

"어떤 특정 사이트에서 특정 데이터를 공유할 경우 어떠한 방식으로 정보를 요청해야 하는지, 그리고 어떠한 데이터를 제공 받을 수 있을지에 대한 규격"

  • 정의 및 프로토콜 집합을 사용하여 두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 메커니즘
    • 예) 기상청 API: 말 그대로, 기상청에서 수집하고 있는 정보를 사용자에게 쉽게 제공하기 위한 목적으로 만들어진 사이트
    • 기상청의 소프트웨어 시스템에는 일일 기상 데이터가 들어 있다. 휴대폰의 날씨 앱은 API를 통해 이 시스템과 ‘대화’하여 휴대폰에 매일 최신 날씨 정보를 표시

API 문서: 해당 API를 제공하는 목적 그리고, 활용하는 방법들에 대한 자세한 설명이 있는 문서


왜 API를 제공하나?

네이버, 카카오톡과 같은 대형 플랫폼에서는 대부분 간편 로그인 API 정보를 제공

  • 간편 로그인 API의 목적은 사용자가 여러 사이트를 하나식 가입하다보면, 너무 많은 사이트에 가입해야하는 단점이 있다
  • 누구나 사용하고 있는 대형 플랫폼의 가입정보를 공유함으로써 간편하게 회원가입을 할 수 있도록 설계된 API

예) 만약 카카오톡 간편 로그인 기능을 통해 여러 사이트를 가입했다고 가정하자. 그리고 카카오톡이 쓰기 싫어지고, 탈퇴하고 싶은 마음이 생겼다 하더라도

  • 카카오톡을 탈퇴하는 순간 카카오톡을 통해 가입했던 수많은 사이트 또한 포기해야되는 상황이 발생하게 된다.

즉, 간편 로그인 기능을 제공함으로써 플랫폼 이탈율을 현저히 줄일 수 있기 때문에 대형 플랫폼들은 간편 로그인 기능을 제공하고 있다.

공유 경제 시대가 흐르면서 정보를 독점하는것보다 공유함으로써 더 많은 이익을 가져갈 수 있는 생태계가 만들어지고 있으며, 이러한 과정에서 다양한 오픈 API와, 비공개 API들이 존재하는 것!


API의 종류와 특징

대표적으로 웹 API와 라이브러리 API가 있다.

1. 웹 API
인터넷을 통해 다른 웹 서비스나 애플리케이션과 통신하기 위해 설계된 API로, 일반적으로 HTTP를 사용하여 데이터를 전송

  • RESTful API, SOAP API 등 다양한 형태가 있으며, 이러한 API를 사용하여 데이터를 검색, 업로드, 업데이트 및 삭제할 수 있다

  • 우리가 현재 코드를 작성하면서 만드는 API가 웹 API에 해당

2. 라이브러리 API
특정 프로그래밍 언어에서 사용되는 라이브러리나 프레임워크에서 제공되는 함수와 클래스 등을 사용하여 다른 소프트웨어 구성 요소와 상호 작용할 수 있도록 인터페이스를 제공

  • 다른 라이브러리나 프레임워크의 기능을 호출하거나 사용자 정의 함수와 클래스를 작성할 수 있다

API 요약

  1. API는 소프트웨어 응용 프로그램에서 다른 소프트웨어 구성 요소 또는 서비스와 상호 작용하기 위한 인터페이스를 제공하는 프로그래밍 기술이다.
  2. API를 사용하면 다른 소프트웨어 구성 요소와 상호 작용하기 위해 필요한 복잡한 코드 작성을 줄일 수 있으며, 더욱 빠르고 효율적인 소프트웨어 개발을 가능하게 한다.
  3. API는 데이터를 보호하고 보안을 유지하기 위한 방법으로도 사용할 수 있다.

2. REST란?

  • RESPT API란 REST의 원리를 따르는 API를 의미
  • REST(Representational State Transfer)의 약자로 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것

REST

Representational State Transfer(REST)는 API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처

"REST(Representational State Transfer)의 약자로 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것"

[즉 REST란]
1) HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource) 명시
2) HTTP Method(POST, GET, PUT, DELETE, PATCH 등) 사용
3) 해당 자원(URI)에 대한 CRUD Operation을 적용

URI와 URL를 쉽게 구분하는 방법은?

  • URI 는 통합 자원 식별자로 주소에 식별자가 있으면 URI
  • URL은 리소스 주소를 나타내므로 리소스 위치까지만 나타내면 URL
  • 예) https://AA.tistory.com/category : category는 리소스의 실제 위치이므로 이 주소는 URL
  • 예) https://AA.tistory.com/category/12 : /12 는 식별자 이므로 URL을 포함한 URI
  • CRUD Operation
    : CRUD는 대부분의 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능인 Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 묶어서 일컫는 말

    Create : 데이터 생성(POST)
    Read : 데이터 조회(GET)
    Update : 데이터 수정(PUT, PATCH)
    Delete : 데이터 삭제(DELETE)

[REST 구성 요소]
REST는 다음과 같은 3가지로 구성이 되어있다.

  • 자원(Resource) : HTTP URI
  • 자원에 대한 행위(Verb) : HTTP Method
  • 자원에 대한 행위의 내용 (Representations) : HTTP Message Pay Load

[REST의 특징]

  • Server-Client(서버-클라이언트 구조)
  • Stateless(무상태)
  • Cacheable(캐시 처리 가능)
  • Layered System(계층화)
  • Uniform Interface(인터페이스 일관성)

3. REST API란?

"REST의 원리를 따르는 API"

  • 클라이언트-서버 구현을 독립적으로 사용하는 아키텍처 스타일
  • REST는 통신에 HTTP 프로토콜을 사용
  • 두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스

[설계 예시]

  • URI는 동사보다는 명사를, 대문자보다는 소문자 사용
  • 마지막에 슬래시(/) 포함 X
  • 언더바(_) 대신 하이픈(-) 사용
  • 파일확장자는 URI에 포함 X
  • 행위 포함 X

[작동 방식]
RESTful API의 기본 기능은 인터넷 브라우징과 동일

  • 클라이언트는 리소스가 필요할 때 API를 사용하여 서버에 접속
  • API 개발자는 서버 애플리케이션 API 문서에서 클라이언트가 REST API를 어떻게 사용해야 하는지 설명

다음은 모든 REST API 호출에 대한 일반 단계
1. 클라이언트가 서버에 요청을 전송
- 클라이언트가 API 문서에 따라 서버가 이해하는 방식으로 요청 형식을 지정
2. 서버가 클라이언트를 인증하고 해당 요청을 수행할 수 있는 권한이 클라이언트에 있는지 확인
3. 서버가 요청을 수신하고 내부적으로 처리
4. 서버가 클라이언트에 응답을 반환

- 응답에는 요청이 성공했는지 여부를 클라이언트에 알려주는 정보가 포함
- 응답에는 클라이언트가 요청한 모든 정보도 포함

REST API 요청 및 응답 세부 정보는 API 개발자가 API를 설계하는 방식에 따라 약간씩 다르다.


RESTful이란?

"RESTful이란 REST의 원리를 따르는 시스템을 의미"

  • 하지만 REST를 사용했다 하여 모두가 RESTful 한 것은 아니다.
  • REST API의 설계 규칙을 올바르게 지킨 시스템을 RESTful하다 말할 수 있다
  • 모든 CRUD 기능을 POST로 처리 하는 API 혹은 URI 규칙을 올바르게 지키지 않은 API는 REST API의 설계 규칙을 올바르게 지키지 못한 시스템은
    • -> REST API를 사용하였지만 RESTful 하지 못한 시스템이라고 할 수 있다.
profile
공부 기록용 24.08.05~ #LLM #RAG

0개의 댓글