포스트 난이도: HOO_Middle
요즘 글을 마음대로 쓰다가 논리 전개를 고려해 가며 쓰다 보니 내가 개발자인지 아니면 작가인지 헷갈릴 정도이다. 문제점을 파악하고 있지만 어떻게 고쳐나가야 할지가 보이질 않다 보니 스스로 지친다. 여기까지가 그동안 포스트가 늦어졌던 나의 핑계이다. 아무튼 오랜만에 포스팅을 하면서 브로들에게 힘을 얻고 간다. 엉망진창처럼 보일 수 있는 포스트도 "고맙다는" 말 한마디에 다시 한번 힘을 내본다.
카카오에서 사용하지 않는 기프티콘이 있다며 연락이 왔다. 언제 받았는지도 모르지만 카카오에서 준 기프티콘이었다. 기한이 많이 남지 않고 하나밖에 안 되다 보니, 한국에 있는 박사생 브로에게 대신 맛있게 먹어달라며 보냈다. 다음부터는 사전에 확인해서 개발자 브로들에게도 나눌 수 있도록 해봐야겠다.
거두절미하고 이번 포스트는 Rest API에 대해서 다뤄볼까 한다.
# API
우선 REST API에 들어가기에 앞서서 API가 무엇인지부터 살펴보자. API는 Application Programming Interface의 줄임말이다. 말 그대로 두 개 이상의 애플리케이션을 연결해 주는 하나의 방법이라고 볼 수 있다. API에 대한 설명을 찾아보면 "클라이언트와 서버, 애플리케이션 등" 어려운 용어로 설명이 되어 있는데 솔직히 처음 보면 이게 무슨 소리인가 싶다. 그럴 수밖에 없는 API가 할 수 있는 일이 많다 보니 그걸 하나의 문장으로 설명하려다 보니 어려워질 수밖에 없다.
그래서 나의 관점에서 생각해낸 아주 쉬운 API의 예시는 "은행원"이라고 볼 수 있다.
우리가 은행을 가게 된다면, 무작정 금고에 가서 돈을 넣을 수 없다. 반대로 내가 통장에 잔고가 있다고 해서 은행을 부시고 들어가서 금고에서 돈을 마음대로 가져갈 수가 없다. 은행 입장에서도 고객이 실제로 잔고에 충분한 돈을 가지고 있는지 확인을 해봐야 한다. 이러한 과정들을 중간에서 관리해 주는 사람이 우리가 만나는 은행원이다. 카카오뱅크 같이 은행원이 없이 "앱"에서 모든 일이 가능하지만 이 앱이라는 것 또한 숨겨져 있는 "은행원"이 존재하는데 그게 바로 API이다.
우리가 카카오뱅크 앱을 통해서 계좌이체를 하거나 입금을 하면 요구하는 기본적인 정보를 입력한다. 금액, 계좌번호, 출금되는 계좌의 비밀번호 등을 확인한다. 처음부터 따지자면 지문이나 핀번호를 입력해서 앱에 로그인부터 한다. 이러한 과정의 전부가 바로 API를 통해서 이뤄진다고 생각하면 된다.
사용자가 특정 정보를 입력했을때 해당 정보는 카카오뱅크의 서버로 향한다. 왜냐하면 해당 정보가 실제로 일치하는 지를 확인해야 하기 때문이다. 이때 메인 서버로 보내지는 요청을 우리는 Request라고 부른다. 여기서 만약에 요청된 작업이 일치한다면 다시 서버에서 사용자 앱으로 Approval, 즉 승인을 해주고 만약에 틀릴 경우, Reject 즉 거부가 이뤄진다. 한마디로 우리가 비밀번호를 잘못 입력하면 "3번 이상 틀릴 경우 초기화가 됩니다"라는 경고 메시지가 나오게 해주는 셈이다.
# API를 만들 수 있다.
개발쟁이 브로들에게 가장 중요한건 우리가 API를 가져와서 쓸 수도 있지만 API를 만들어서 배포할 수도 있다는 것이다. API는 마치 우리가 프로그래밍을 할 때 사용하는 하나의 모듈, 패키지, 라이브러리 등과 같다. API를 만들어서 여러 기업들이 사용할 수도 있고 개발자가 처음부터 모든 것을 사용할 필요 없이 API를 사용하여 쉽게 프로그램 개발을 완료할 수도 있다. 한마디로 API가 특정 데이터의 트랜잭션을 담당하는 역할로도 사용할 수 있지만 기능적인 면에서 설계의 일부를 담당할 수도 있는 셈이다.
Layer 계층이 많은 소프트웨어일 수록 API를 설계하여 배포하거나 사용하는 편이다. 한마디로 여러 애플리케이션이 하나의 소프트웨어에 많이 포함되어 있을 경우 이를 표준화해서 API로 만들곤 하는데 대표적인 경우 중 하나가 블록체인이 해당된다.
(너무 멀리 벗어나면 머리가 아파지기 때문에)다시 본론으로 돌아서 API는 데이터를 어떻게 트랜잭션 해야 하는지에 대해서 담아있는 소프트웨어이면서 복잡한 트랜잭션에 대해서 설계할 수 있도록 기본 틀을 제공해 주는 역할을 할 수 있다.
# REST API
Representational State Transfer의 줄임말로써 사용자가 서버 데이터에 접근할 때 기준을 정해주는 API이다. 한마디로 HTTP를 사용하여 데이터를 교환할 때, 어떤 방식으로, 어떤 조건으로 데이터 트랜잭션을 발생시킬 건지를 설계할 수 있는 API인 셈이다. 많이 들어봤을 법한 CRUD (Create, Read, Update, Delete)가 REST API에서는 POST, GET, PUT, DELETE로 나타낼 수 있다. 이 최소한의 4가지 방법에 대해서 어떻게 표준화하고 설계할 것인지가 REST API에 담겨 있다고 볼 수 있다.
REST API에 대한 디자인 원칙부터 구체적인건 추후 원하는 브로가 있으면 이어서 나가보도록 하겠다.
'Computer Science' 카테고리의 다른 글
[Github] Managing Data with Git (fork, git clone, git checkout, git push) (8) | 2024.09.08 |
---|---|
[Computer Science] 코드 작성 전에 플로우 차트(Flow Charts)를 그리는 연습을 해야하는 이유 (4) | 2024.08.17 |
[Computer Science] 수도 코드 사용하는 이유와 작성 방법 (0) | 2024.07.08 |
[Computer Science] Full Stack SaaS Platform이란 (0) | 2023.07.07 |
[Computer Science] 사물인터넷 (IoT)이 뭔가요? (1) | 2023.07.06 |
댓글