새로운 프로젝트를 진행하기 앞서, RESTful API라는 아키텍처 스타일을 정했다.
* 아키텍처 스타일이란 쉽게 말해 소프트웨어 시스템을 설계하고 구축하는 데 사용되는 기본적인 청사진이나 가이드라인이라고 할 수 있다.
우선 RESTful API는 REST API의 원칙을 엄격히 지키는 방식이라고 한다.
그럼 그전에 REST API부터 아니. API부터 제대로 알고 가보자!
🙇♂️ 얄팍한 코딩사전 님의 유튜브를 참고하였습니다.
API
Application
Programming
Interface
이는 소프트웨어들이 서로 대화할 때 사용하는 수단이다. 그럼 우선 소프트웨어란 무엇일까?
-소프트웨어들의 대화 💻 💬

우리가 유튜브 플랫폼을 사용할 때 컴퓨터, 핸드폰, 패드 등 다양한 기기들을 통해 사용한다.
이 기기들 안에서 유튜브 영상을 보여주는 앱, 웹사이트 모두가 소프트웨어이다!
그렇다면 우리의 유튜브 앱 안에 모든 영상들이 저장되어 있는 걸까? (23893480000GB 폰이면 가능함) + 외장메모리 + 뇌절 그만.

유튜브의 영상들은 모두 '서버'라는 곳에 저장되어 있다.
각 기기들은 서버로부터 영상들과 관련 데이터를 받아와 재생한다.

이 서버에는 마치 레스토랑의 웨이터처럼, 다른 소프트웨어의 주문을 받아 '서빙'을 하는 소프트웨어가 설치되어 실행되고 있다.
그래서 '서버'라고 불린다!
- 'Server'는 'serve'(서비스하다, 제공하다)라는 동사에 '-er'(~하는 사람 또는 물건을 나타내는 접미사)을 붙여 만든 단어
즉, 컴퓨터 네트워크에서 서버는 다른 프로그램이나 기기(클라이언트)에 서비스를 제공하는 컴퓨터 프로그램 또는 기기인 것이다.

우리가 유튜브 앱을 켜면 유튜브 앱은 서버에 설치된 이 소프트웨어에게 '나에게 맞는 알고리즘의 영상들을 보내달라'는 요청을 보낸다.
이에 대한 응답으로 서버는 영상들의 정보를 보내준다. 그 정보를 기반으로 우리가 보는 유튜브 화면을 보여주는 것이다.
-API 란? 🤔

API는 이 웨이터, 즉 서버 역할을 하는 프로그램이 나눠주는 메뉴판이라고 할 수 있다.
이 메뉴판에는 요청을 보내는 쪽, 즉 클라이언트들이 보내고 있는 요청들이 메뉴처럼 나열되어 있다.
다음 영상 재생하기, 구독하기, 좋아요 누르기 구독하기 등등 이런 메뉴들이 있다.
우리 인간들은 자연어를 통해 서로 소통하지만 소프트웨어들끼리 소통하려면이들 간의 규약이 필요하다.

고객이 ' 피자'를 주문하면 웨이터가 '피자'를 가지고 오도록 되어있는 메뉴판처럼 말이다.
"네가 피자를 요청하면 내가 피자를 줄게".
즉 "네가 이런 방식으로 보내주면 내가 그걸 이렇게 처리해 줄게"와 같은 체계가 필요하다.

또한, API는 클라이언트에서 어떻게 요청하는가뿐만 아니라 서버에서 어떻게 대답하는가도 정의한다!
'페페로니 피자'를 시킨다면, 페페로니가 담겨있게 정해져 있는 거처럼 말이다!
카카오톡 개발자센터에 들어가서. 지도/ 로컬 관련 (카카오톡 맵 관련 API 문서) API 문서를 들어가 보자.

이처럼 지도/관련 다양한 기능을 제공하는 REST API 문서들이 존재한다.
'주소 검색하기' 기능에 관한 문서를 들여다보자!

기본 정보에는 API의 주소인 URL과 인증 방식이 나와있고,
어떠한 방식으로 요청을 보내야 하는지, 어떠한 응답 방식을 지원하는지 적혀있다.
간단히 헤더 부분만 살펴보자.

즉 요청에 해당하는 부분이 "네가 이렇게 말하면"에 해당하고 , 응답에 해당하는 부분이 "그럼 내가 이렇게 해줄게"에 해당하는 것이다!
API는 이처럼 특정 데이터를 조회하는 것뿐 아니라, 데이터를 새로 생성하거나 수정, 삭제하는 용도로도 사용된다!

우리가 SNS에서 포스트를 올리고, 좋아요를 누르고, 댓글을 삭제하는 것 또한 앱에서 서버로 보내는 요청으로 API에 의해 처리!
API는 무엇을 보내고 무엇을 받아오는가에 대한 것이기 때문에 언어나 프레임워크 등에 구애받지 않는다.
API는 사양, 원칙인거지 뭔가를 실제로 프로그래밍한 구현체가 아니기 때문이다.
즉 이와 같이 요청해야 하고 이와 같이 응답해야 한다 인 거지, 그 결과물은 아니다.

어떤 프로그래밍 언어나 기술을 사용하든 그 API에 명시된 바에 따라 소프트웨어를 만들면 된다.
ex) 종업원이 한국어든 , 영어든 피자를 시키면 피자를 가져다주듯 말이다.
-API의 종류
API는 어떻게 사용되는가에 따라 여러 종류가 있다.
먼저, 유튜브의 예시처럼 특정 서비스를 구성하는 소프트웨어들 간에 사용되는 API가 있다.
흔히 웹사이트와 모바일 앱과 같은 프런트엔드가 백엔드 서버와 상호작용할 때 사용되는 API.
이들을 internal API 또는 private API라고 부른다.

이 API에 따라프런트엔드 개발자들은 요청을 보내는 코드, 백엔드 개발자들은 그 요청을 받아 처리하는 코드를 작성.
이 API를 잘 만들어두는 게 개발자들끼리 협업하는 데 있어 정말 중요하다.
다음은 아까 살펴본 카카오 지도 API처럼, 전 세계의 누구든 자유롭게 또는 가입하거나 비용을 지불하면 사용할 수 있는 API.
이처럼 모두에게 공개된 것을 Public API라고 한다.

다음은 아까 살펴본 카카오 지도 API처럼, 전 세계의 누구든 자유롭게 또는 가입하거나 비용을 지불하면 사용할 수 있는 API.
이처럼 모두에게 공개된 것을 Public API라고 한다.
Public API는 기업이나 공공기관, 혹은 개인이 자신들의 데이터와 서비스를 다른 개발자들이 가져다 쓸 수 있도록 만들어 둔 것.
🙇♂️ 결론
이렇게 API에 관하여 알아보았다. API는 쉽게 요청과 응답의 방식을 정해두는 규약이라고 생각한다.
자 그러면 이 규약을 어떻게 정할지. 나는 이번 프로젝트에서 RESTful API의 설계방식으로 API를 설계하기로 하였다.
사실 설계방식 또한, 내 프로젝트에 알맞은 설계방식을 정하는 게 맞는 순서라 생각한다.
하지만 우선, RESTful API가 현업에서 널리 쓰이는 방식이고 보편적인 방식이라 하니 이 방식으로 진행하고자 한다.
다음엔, RESTful API에 대해서 제대로 알아보고 프로젝트에 적용시킬 수 있도록 정리하는 시간을 가져야겠다!
더 나아가서, 이외에도 API 설계방식엔 어떤 것들이 있는지도 추가로 알아봐야겠다.
endpoint : /api/mybirthday
//생일 정보 조회
GET /api/mybirthday
{
"message": "🎉 나의 생일 🎂",
"date": "2024-09-09",
}
'Knowledge > 🌐 Web 지식' 카테고리의 다른 글
| OAuth란? (0) | 2024.09.07 |
|---|---|
| 테스트 코드 (Test Code)란? (2) | 2024.09.04 |
| RESTful API란? (2) | 2024.09.03 |
| 세션(Session) & 토큰(JWT) (0) | 2024.08.22 |
| 인증 / 인가 (2) | 2024.08.21 |