챗 GPT 활용사례

REST API 가 뭘까?

ta, 2024. 12. 24. 23:09
반응형

요즘 생성형 AI 등장으로 많은 일반인들도 API라는 용어를 많이 들어봤을꺼에요. 저도 그런 일반인들 중에 한명입니다. 요즘 저는 노코드 툴을 n8n과 친해지는 중이에요. 그러다가 오늘은  REST API 에 대해 조금더 자세히 살펴봤어요.

 

API 란? 

API는 "Application Programming Interface"의 줄임말입니다. 프로그램끼리 대화하는 방법이에요. 나라는 프로그램과 스페인 사람이 다른 프로그램이라고 할 때, 나는 한국어로 스페인 사람은 스페인어로 대화하면 대화가 안되겠죠. 그래서 둘다 영어로 말하기라고 대화방법 즉 통신 규칙을 정하는거죠. 그걸 IT에서는 API 라고 부릅니다. 

 

여기서 알아야 할, 기본 개념 몇 가지가 있어요. 

  • 요청(Request): 데이터를 요청하는 메시지.
  • 응답(Response): 요청에 대한 서버의 답변.
  • 엔드포인트(Endpoint): API에 요청을 보낼 때 사용하는 주소.

 

 

일상의 예로 ATM 기기에 잔액 조회를 할 때를 보면, 제가 ATM 기계에 제 계좌 잔액조회를 하면 ATM 기계는 은행 서버에 계좌 잔액을 물어서 얻은 대답을 ATM 기계를 통해 제게 보여주게 되죠. 잔액조회를 Request, 은행 서버가 잔액을 대답하는 걸 Response 라는 용어로 표현합니다. 

  • ATM 기기와 은행 서버 간의 대화에서 보면 
    • ATM이 계좌 잔액을 물어보기 = Request = 요청 = API 호출
    • 은행 서버가 잔액을 응답 = Response = 응답 = API 응답  

 

 

REST API란? 

API 중에서 REST라는 규칙으로 작동하는 API를 말합니다. API 가 큰 카테고리라면 세부 카테고리 중에 하나인거죠. REST는 Representational State Transfer 의 약자로, 이름 자체가 이 방식의 철학과 동작 원리를 표현해요. 이름을 해부해 보면 다음과 같은 의미를 가지고 있어요.

 

1. Representational (표현)

우리는 공공기관에게 문서로 소통할때는 한글파일로 외국회사와 소통할 때는 주로 MS워드를 사용하게 됩니다. 이렇게 문서를 통해 주고 받는 과정을 빗대어 보면 다음처럼 간단히 볼 수 있어요.

 

우리 = 클라이언트 = 사용자

공공기관, 외국회사  = 서버 = 데이터 제공자

한글 파일, MS워드  = 표현 

문서에 들어 있는 내용 = 데이터 

 

즉, 서버에서 데이터를 클라이언트에 보낼 때, 데이터를 XML, JSON, HTML 등 다양한 형태로 "표현"할 수 있어요. 클라이언트는 요청(request)으로 원하는 "표현" 방식을 정하고, 서버는 그 표현을 만들어 보내주는 거죠.

 

2. State (상태)

  • REST는 상태(state)라는 개념을 중요하게 생각해요.
    • 클라이언트는 서버에 요청을 보낼 때마다 필요한 정보(요청의 상태)를 담아서 서버에 전달해요. 서버는 클라이언트의 상태를 기억하지 않고, 요청에 포함된 정보만으로 작업을 처리해요.
    • 이를 무상태(stateless)라고 해요. 예를 들어, 이전 대화 내용을 기억하지 않는 방식으로 작동해요. 언제나 첫 대화라고 가정하는거죠. 자주가는 카페에서 직원이 저를 기억하고 "아 오늘도 카페라떼 드릴까요?" 라고 말하는 건 이전 상태(state)를 기억하는거에요. REST 는 상태(state)를 기억하지 않아요. 

3. Transfer (전송)

  • 클라이언트와 서버 간의 정보가 "전송"되는 것을 의미해요.
  • 클라이언트는 요청(request)이라는 방식으로 데이터를 요구하고, 서버는 응답(response)으로 데이터를 전송해요. 이 모든 작업이 HTTP 프로토콜(이것도 인터넷 상에서 소통할 때 사용하는 규칙이랍니다) 위에서 이루어져요.

 

왜 이런 방식이 필요할까?

때때로 접속자가 많아서 서버가 다운되었는다는 이야기 들어보셨죠? 서버가 이전 대화내용을 기억하지 않으면 수백만 사용자(클라이언트)가 서버를 사용해도 부담이 덜해요. 그리고 이전의 기억이 없으니 서버나 클라이언트를 언제든 교체해도 문제가 생기지 않습니다. 

 

다만, 뭔가를 요청할때마다 매번 처음 처럼 요청해야 하니 귀찮은 단점은 있습니다. 

반응형