밥풀의 개발일지

엔드 포인트와 API(나의 이야기를 곁들인) 본문

개발

엔드 포인트와 API(나의 이야기를 곁들인)

밥풀42 2023. 10. 4. 20:38

조금 된 이야기이지만 대학교 연구실에서 인턴을 한 적이 있었다.

그 당시의 나는 개발에 'ㄱ'도 모르고 있던 시절이었는데

교수님께서 분산 웹 서버를 만들어보라는 과제를 내주셨다.(이것 때문에 2달을 참 고생했었는데...)

그때 나랑 같은 과제를 받은 3학년 선배가 있었는데 그 때 선배가 했던 말이 생각이 났다.

" 아 이거 쭉 보니까 만들 수 있을 것 같은데? 엔드포인트도 어떻게 설정해야할지 감이 와"

여기서 내 머리를 스친 것이 있었으니... 바로 "엔드포인트"였다.

"엔드포인트가 뭐지?" 라는 잠깐의 고민이 있었지만 앞에서 말했다싶이 아무것도 몰랐던

그 과제를 작동시키는데에만 급급해서 많은 것을 놓치면서 만들었던 기억이 있다.

그리고 이번에 server-client 미니 프로젝트를 만들고 있는데 다시한번 "엔드포인트"와 만나게 되었고

이번에는 확실하게 개념을 잡고 가고자 이렇게 글을 써볼려고 한다.

 

엔드포인트

"API가 서버에서 자원(resource)에 접근할 수 있도록 하는 URL"

구글링을 열심히 하면서 찾아본 결과 대충 이렇게 한문장으로 요약할 수 있을 것 같다.

 

그리고 관련 글들을 살펴보니 API가 계속해서 함께 등장하는 것을 보니 API를 함께 설명하면 더 쉽게 엔드포인트에 대해서 설명할 수 있을 것 같다.

 

API

사전적 의미

API (Application Programming Interface, 응용 프로그래밍 인터페이스)는 응용 프로그램에서 사용할 수 있또록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다. 주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공한다. - 위키백과

API는 일종의 웨이터라고 생각하면 쉽다. 사실 이렇게 말해도 이해가 잘 되지 않기 때문에 그림으로 예시를 들어보겠다.

출처 : https://moonspam.github.io/What-is-an-API/

 

왼쪽의 손님이 음식을 요청하는 프로그램이고 오른쪽의 요리사는 음식을 만들어서 전달하는 프로그램라고 생각하자

그리고 중간에 있는 웨이터가 API라고 하였을 때  API는 손님(프로그램)이 주문할 수 있는 주문(명령어)를 정리하고, 이를 요리사(응용프로그램)에 전달한 다음 만들어진 메뉴(명령에 대한 값)을 손님(프로그램)에 전달하는 역할을 한다.

 

API는 이렇게 프로그램 간의 상호작용하는 것을 도와주는 매개체라고 생각하면 되겠다.

 

다시 엔드포인트 설명으로 돌아와서 REST API에 대해서 설명을 이어나가겠다.

 

REST API

Representational State Transfer 라는 용어의 약자로서 2000년도에 로이 필딩(Roy Fielding)의 박사 학위 논문에서 최초로 소개됨. 로이 필딩은 HTTP의 주요 저자 중 한 사람으로 그 당시 웹(HTTP) 설계의 우수성에 비해 제대로 사용되지 못하는 모습에 안타까워하며 웹의 장점을 최대한 활용할 수 있는 아키텍처로써 REST를 발표

REST API는 REST를 통해서 서비스 API를 구현한 것을 말한다.

REST에 대한 전반적인 이해가 필요한데 크게 3가지 속성이 있다.

  1. HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고,
  2. HTTP Method(POST, GET, PUT, DELETE, PATCH 등)를 통해
  3. 해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미합니다.

REST의 구성 요소에는 3가지로 구성되어있다.

  1. 자원(Resource) : HTTP URI
  2. 자원에 대한 행위(Verb) : HTTP Method
  3. 자원에 대한 행위의 내용 (Representations) : HTTP Message Pay Load

 

REST에서 자원(resource)에 접근할 때 URL로 하는데 이는 URL이 자원의 위치를 나타내는 일종의 식별자이기 때문이다.

 

정리

최종적으로 엔드포인트에 대해서 정리하겠다.

HTTP Method와 같은 URL들에 대해서도 다른 요청을 하게끔 구별하게 해주는 항목이 바로 엔드포인트이다.

출처 : https://velog.io/@kho5420/Web-API-%EA%B7%B8%EB%A6%AC%EA%B3%A0-EndPoint

각각 메소드에 따라 다른 요청을 할 수 있는 것을 알 수 있다.

 

위의 그림에서 노란색 박스가 엔드포인트이다. 초록색 박스는 뭐라고 불러야할지 잘 모르겠다.

 

나의 지식이 틀렸을 수도 있으니 관련 stackoverflow링크를 남겨 놓겠다.

https://stackoverflow.com/questions/2122604/what-is-an-endpoint

 

참고

https://khj93.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-REST-API%EB%9E%80-REST-RESTful%EC%9D%B4%EB%9E%80

https://velog.io/@kho5420/Web-API-%EA%B7%B8%EB%A6%AC%EA%B3%A0-EndPoint

https://blog.naver.com/ghdalswl77/222401162545