API를 활용한 프로젝트를 경험해봤는데, 정작 API가 정확히 무엇인지는 알고 있지 않았다.
그래서, 이번 기회에 정확하게 개념을 정립하려고 한다.
API는 Application Programming Interface
(애플리케이션 프로그램 인터페이스)의 줄임말이다.
API 맥락에서,
Application
(애플리케이션)은 고유한 기능을 가진 모든 소프트웨어를 의미한다. Interface
(인터페이스)는 두 애플리케이션 간의 서비스 계약이라고 볼 수 있다. 이 계약은 Requset
(요청)과 Response
(응답)을 사용하여 두 애플리케이션이 서로 통신하는 방법을 정의한다.말이 너무 어렵다. 간단하게 바꿔보자.
API는 키보드와 같다. 무슨 말이지?
자, 우리가 컴퓨터와 대화하려면 어떻게 해야할까?
개발을 한다면 코드(텍스트)를 작성해서 프로그램을 만든다.
그러면 이 코드는 어떻게 작성할까?바로, 키보드로 작성한다.
그러니까 우리는 키보드를 통해서 컴퓨터와 대화를 하는 것이다.
✅ 즉, API는 프로그램들이 서로 소통을 할 수 있도록 도와주는 하나의 매개체로 볼 수 있다.
추가 설명 ?
코드들끼리 서로 소통하기 위해 만들어진 것이 API이다.
API는 서버에서 만들어지고, 이 API를 앱에 전달을 한다.앞서 API는 키보드와 같다고 했다.
예를 들어 각각의 키들이 로그인, 로그아웃, 권한 요청, 게시물 업로드, 팔로우 요청 등의 기능을 수행한다고 하자.
우리가 앱에서 이 키들을 누르면 백엔드 데이터베이스, 서버로 가서 어떤 키를 눌렀는지 알려준다. 그 후 키를 누른 결과를 우리에게 보여준다.이렇듯 서로의 소통을 도와주는 역할을 하는 것이 API이다.
우리가 인기 급상승 중인 영화 데이터를 알아보고 싶다고 하자.
TMDB API를 사용해보겠다.
https://api.themoviedb.org/3/movie/popular?api_key=${API_KEY}
TMDB API는 인기 영화 요청(request)에 필요한 URL을 다음과 같이 명시하고 있다.
이를 이용해서 데이터를 뽑아내보면 다음과 같다.
{"page":1,
"results":[{"adult":false,
"backdrop_path":"/hiHGRbyTcbZoLsYYkO4QiCLYe34.jpg",
"genre_ids":[27,9648,53],
"id":758323,
"original_language":"en",
"original_title":"The Pope's Exorcist",
"overview":"Father Gabriele Amorth, Chief Exorcist of the Vatican, investigates a young boy's terrifying possession and ends up uncovering a centuries-old conspiracy the Vatican has desperately tried to keep hidden.","
popularity":3591.591,
"poster_path":"/9JBEPLTPSm0d1mbEcLxULjJq9Eh.jpg",
"release_date":"2023-04-05",
"title":"The Pope's Exorcist",
"video":false,
"vote_average":7.4,"vote_count":717},
{"adult":false,"
backdrop_path":"/3CxUndGhUcZdt1Zggjdb2HkLLQX.jpg",
"genre_ids":[28,12,878],
"id":640146,"original_language":"en",
"original_title":"Ant-Man and the Wasp: Quantumania",
"overview":"Super-Hero partners Scott Lang and Hope van Dyne, along with with Hope's parents Janet van Dyne and Hank Pym, and Scott's daughter Cassie Lang, find themselves exploring the Quantum Realm, interacting with strange new creatures and embarking on an adventure that will push them beyond the limits of what they thought possible.",
"popularity":3783,
"poster_path":"/qnqGbB22YJ7dSs4o6M7exTpNxPz.jpg",
"release_date":"2023-02-15",
"title":"Ant-Man and the Wasp: Quantumania",
"video":false,"vote_average":6.6,"vote_count":2346}, ...
}
결과를 보면, 이번에 재밌게 본 앤트맨3가 보인다.
각설하고 데이터를 보면 영화의 줄거리, 제목, 몇 세 이상인지, 장르는 무엇인지 등을 알려준다.
만약, 우리가 API 없이 인기 영화 데이터를 갖고 싶다면 일일히 노가다를 해야할지도 모른다. 아찔하다.
REST는 Representational State Transfer
의 약자로 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미한다.
즉 REST란,
CRUD는 Create(C)
, Read(R)
, Update(U)
, Delete(D)
를 묶어서 표현하는 말이다.
Method | 역할 |
---|---|
GET | 리소스 조회하고 해당 리소스를 가져온다. |
POST | 요청 데이터 처리, 주로 등록에 사용 |
PUT | 리소스의 전체 교체, 해당 리소스가 없으면 생성 |
DELETE | 리소스 삭제 |
PATCH | 리소스의 일부 교체 |
REST를 기반으로 만들어진 API를 의미한다.
가장 중요한 항목은 다음 2가지로 요약 가능하다.
- URI는 정보의 자원을 표현해야 한다.
- 자원에 대한 행위는 HTTP Method(
GET
,POST
,PUT
,DELETE
)로 표현한다.
GET /members/delete/1
GET
, POST
, PUT
, DELETE
등)로 표현한다.DELETE /members/1
/
)는 계층 관계를 나타내는 데 사용한다./
)를 포함하지 않는다.http://restapi.example.com/houses/apartments/ ❌
http://restapi.example.com/houses/apartments ⭕️
-
)은 URI 가독성을 높이는데 사용_
)은 URI에 사용하지 않는다.http://restapi.example.com/members/soccer/345/photo.jpg ❌
[참고]
[참고]
https://aws.amazon.com/ko/what-is/api/