
참고 사이트 + ChatGPT
[네트워크] REST API란? REST, RESTful이란?
IBM-REST API란 무엇인가
AWS-RESTful API란 무엇인가
AppMaster-REST API
애플리케이션이나 서비스가 다른 애플리케이션이나 서비스 내의 리소스에 액세스할 수 있도록 하는 메커니즘
- 서로 다른 응용 프로그램 간의 상호 작용 및 통신을 허용하는 기능과 규칙을 제공
- 리소스에 액세스하는 애플리케이션이나 서비스가 클라이언트
- 리소스를 포함하는 애플리케이션이나 서비스는 서버

"API는 Application Programing Interface라는 용어로써, 어떠한 응용프로그램에서 데이터를 주고 받기 위한 방법"
"소프트웨어 응용 프로그램에서 다른 소프트웨어 구성 요소 또는 서비스와 상호 작용하기 위한 인터페이스를 제공하는 프로그래밍 기술"
API의 맥락에서
- '애플리케이션': 고유한 기능을 가진 모든 소프트웨어, 특정한 업무를 수행하기 위해 개발된 응용 소프트웨어
- '프로그래밍': 컴퓨터에 부여하는 명령을 만드는 작업. 수식이나 작업을 컴퓨터에 알맞도록 정리해서 순서를 정하고 컴퓨터 특유의 명령코드로 고쳐 쓰는 작업
- '인터페이스': 두 애플리케이션 간의 서비스 계약 (요청과 응답을 사용하여 두 애플리케이션이 서로 통신하는 방법을 정의), 사물과 사물 사이 또는 사물과 인간 사이의 경계에서, 상호 간의 소통을 위해 만들어진 물리적 매개체나 통신 규칙
"어떤 특정 사이트에서 특정 데이터를 공유할 경우 어떠한 방식으로 정보를 요청해야 하는지, 그리고 어떠한 데이터를 제공 받을 수 있을지에 대한 규격"
API 문서: 해당 API를 제공하는 목적 그리고, 활용하는 방법들에 대한 자세한 설명이 있는 문서
네이버, 카카오톡과 같은 대형 플랫폼에서는 대부분 간편 로그인 API 정보를 제공
예) 만약 카카오톡 간편 로그인 기능을 통해 여러 사이트를 가입했다고 가정하자. 그리고 카카오톡이 쓰기 싫어지고, 탈퇴하고 싶은 마음이 생겼다 하더라도
즉, 간편 로그인 기능을 제공함으로써 플랫폼 이탈율을 현저히 줄일 수 있기 때문에 대형 플랫폼들은 간편 로그인 기능을 제공하고 있다.
공유 경제 시대가 흐르면서 정보를 독점하는것보다 공유함으로써 더 많은 이익을 가져갈 수 있는 생태계가 만들어지고 있으며, 이러한 과정에서 다양한 오픈 API와, 비공개 API들이 존재하는 것!
대표적으로 웹 API와 라이브러리 API가 있다.
1. 웹 API
인터넷을 통해 다른 웹 서비스나 애플리케이션과 통신하기 위해 설계된 API로, 일반적으로 HTTP를 사용하여 데이터를 전송
RESTful API, SOAP API 등 다양한 형태가 있으며, 이러한 API를 사용하여 데이터를 검색, 업로드, 업데이트 및 삭제할 수 있다
우리가 현재 코드를 작성하면서 만드는 API가 웹 API에 해당
2. 라이브러리 API
특정 프로그래밍 언어에서 사용되는 라이브러리나 프레임워크에서 제공되는 함수와 클래스 등을 사용하여 다른 소프트웨어 구성 요소와 상호 작용할 수 있도록 인터페이스를 제공
- API는 소프트웨어 응용 프로그램에서 다른 소프트웨어 구성 요소 또는 서비스와 상호 작용하기 위한 인터페이스를 제공하는 프로그래밍 기술이다.
- API를 사용하면 다른 소프트웨어 구성 요소와 상호 작용하기 위해 필요한 복잡한 코드 작성을 줄일 수 있으며, 더욱 빠르고 효율적인 소프트웨어 개발을 가능하게 한다.
- API는 데이터를 보호하고 보안을 유지하기 위한 방법으로도 사용할 수 있다.
- RESPT API란 REST의 원리를 따르는 API를 의미
- REST(Representational State Transfer)의 약자로 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것

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
Create : 데이터 생성(POST)
Read : 데이터 조회(GET)
Update : 데이터 수정(PUT, PATCH)
Delete : 데이터 삭제(DELETE)

[REST 구성 요소]
REST는 다음과 같은 3가지로 구성이 되어있다.
[REST의 특징]
"REST의 원리를 따르는 API"
- 클라이언트-서버 구현을 독립적으로 사용하는 아키텍처 스타일
- REST는 통신에 HTTP 프로토콜을 사용
- 두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스

[설계 예시]
[작동 방식]
RESTful API의 기본 기능은 인터넷 브라우징과 동일
다음은 모든 REST API 호출에 대한 일반 단계
1. 클라이언트가 서버에 요청을 전송
- 클라이언트가 API 문서에 따라 서버가 이해하는 방식으로 요청 형식을 지정
2. 서버가 클라이언트를 인증하고 해당 요청을 수행할 수 있는 권한이 클라이언트에 있는지 확인
3. 서버가 요청을 수신하고 내부적으로 처리
4. 서버가 클라이언트에 응답을 반환
- 응답에는 요청이 성공했는지 여부를 클라이언트에 알려주는 정보가 포함
- 응답에는 클라이언트가 요청한 모든 정보도 포함
REST API 요청 및 응답 세부 정보는 API 개발자가 API를 설계하는 방식에 따라 약간씩 다르다.
"RESTful이란 REST의 원리를 따르는 시스템을 의미"