API 와 Endpoint

정화·2024년 4월 22일

하지만 URI URL 두 가지가 있는지 모르고 이 두가지를 하나로 혼용해 "인터넷 주소잖아" 라고 생각하는게 일반적입니다.

크게 문제는 없지만 이 둘의 차이점이 존재합니다.

사진을 통해 간단히 보자면 URI가 가장 큰 개념으로 URI의 하위 개념으로 URL과 URN을 포함하고있습니다.

이번 포스팅에선 URI와 URL,URN 각 개념과 차이점에 대해 알아보려합니다.

먼저 URL의 구조 부터 알아야 하기 때문에 URL 부터 설명해보겠습니다.

URL ( Uniform Resource Locator ) - 통합 자원 지시자
URL은 우리가 가장 흔히 보는 것으로

URL은 Resource의 정확한 위치 정보(파일의 위치)를 나타냅니다.

URL을 통해 Resource가 어디에 있는지 어떻게 접근할 수 있는 지 알 수 있습니다.

URL 예시
https://www.naver.com/ - 네이버의 URL

https://search.shopping.naver.com/best/today?rankedDate=20220922 - 네이버 쇼핑의 오늘의 베스트 카테고리 URL

https://www.youtube.com/feed/subscriptions - 유튜브의 구독한 목록 URL

URL의 구조

다음과 같은 URL이 있다하고 이 URL을 부분별로 나누어 하나씩 살펴보겠습니다.

https://hstory0208.tistory:3000/category?category=network&page=5#url차이

URN ( Uniform Resource Name ) - 통합 자원 이름
Resource의 위치와 상관없이 식별 가능한 고유한 이름 역할을 합니다.

URN은 이름이 변하지 않는한, 리소스 위치가 변경되더라도 문제없이 동작합니다.

즉, 리소스 위치와 상관없이 이름만으로 식별할 수 있다는 개념입니다.

URN은 URL의 한계로 인해 생긴 것으로 아직까진 URL이 대중화가 되어 채택되지 못했습니다.

URL의 한계란 ?

리소스의 위치를 옮기면 해당 URL을 더 이상 사용할 수 없는것.

만약, 구글 검색에 노출된 hstory0208.tistory.com/10 이라는 링크가 있다고 가정해봅시다.
이 주소를 바꾸고 싶어 hstory0208.tistory.com/network/10 으로 주소를 바꾼다면
다른 사람이 기존에 노출된 링크(hstory0208.tistory.com/10)에 접속 시 주소가 바뀌었기 때문에 해당 페이지는 찾을 수가 없게되는것입니다.
이게 바로 URL의 한계 입니다.

URI ( Uniform Resource Identifier ) - 통합 자원 식별자
자원의 위치뿐만 아니라 자원에 대한 고유 식별자로서 URL을 의미를 포함합니다.

URI의 존재는 인터넷에서 요구되는 기본조건으로써 인터넷 프로토콜에 항상 붙어다니며,

URI의 하위 개념으로 URL,과 URN이 있습니다.

URI와 URL 구분하기

URI와 URL를 쉽게 구분하는 방법은

URI 는 통합 자원 식별자로 주소에 식별자가 있으면 URI

URL은 리소스 주소를 나타내므로 리소스 위치까지만 나타내면 URL 입니다.

다음 예시를 통해 비교하며 이해해봅시다.

https://hstory0208.tistory.com/category
hstory0208.tistory.com 에서 category 라는 경로를 나타냅니다.

category는 리소스의 실제 위치이므로 이 주소는 URL 입니다.

https://hstory0208.tistory.com/category/12
hstory0208.tistory.com 에서 category 라는 자원의 경로를 나타내는 부분까진 URL 이지만

/12 는 식별자 이므로 https://hstory0208.tistory.com/category URL을 포함한 URI라고 할 수 있습니다.

https://hstory0208.tistory.com/category?page=12
위와 마찬가지로 https://hstory0208.tistory.com/category 까지는 자원의 실제 위치를 나타내기 때문에 URL이고,

뒤의 query ( ?page=12 ) 가 붙었으므로 https://hstory0208.tistory.com/category URL을 포함한 URI 입니다.


API 와 Endpoint의 차이 한 줄 정리

API가 두 시스템(어플리케이션)이 상호작용할 수 있게 하는 프로토콜의 총집합이라면,

ENDPOINT는 API가 서버에서 리소스에 접근할 수 있도록 가능하게 하는 URL이라 할 수 있겠다.

  1. Endpoint, 엔드포인트

An endpoint is simply one end of a communication channel.

(stackoverflow)

커뮤니케이션 채널의 한 쪽 끝.

서비스를 이용할 때 사용하는 커뮤니케이션 채널의 한쪽 끝에 해당하는 URI.

이번에 api를 활용 할 때 , end point라고 적혀있고
url이 적혀있어서 뭔가 궁금했었다.

API는 Application Programming Interface의 약자로, 응용 프로그램 프로그래밍 인터페이스.
프로그램 혹은 시스템 간의 통신하는 창구, 즉

프로그램들이 서로 상호작용하는 것을 도와주는 매개체라 할 수 있다.

점원은 손님에게 메뉴를 알려주고, 주방에 주문받은 요리를 요청하고, 그다음 주방에서 완성된 요리를 손님께 다시 전달. API는 여기서 점원과 같은 역할을 한다.

API는 손님(프로그램)이 주문할 수 있게 메뉴(명령 목록)를 정리하고,

주문(명령)을 받으면 요리사(응용프로그램)와 상호작용하여 요청된 메뉴(명령에 대한 값)를 전달한다.

API는 프로그램들이 서로 상호작용하는 것을 도와주는 매개체로 볼 수 있겠다.

이제.. API가 뭔지 대충은 감이 오니까 더 자세히 알아보자!

  1. API는 서버와 데이터베이스에 대한 출입구 역할을 한다.

: 데이터베이스에는 소중한 정보들이 저장된다. 그렇기에 모든 사람들이 이 데이터베이스에 접근할 수 있어서는 안 된다. API는 이를 방지하기 위해 사람들이 가진 서버와 데이터베이스에 대한 출입구 역할을 하며, 허용된 사람들에게만 접근성을 부여해 준다.

  1. API는 애플리케이션과 기기가 원활하게 통신할 수 있도록 한다.

: 여기서 애플리케이션이란 우리가 흔히 알고 있는 스마트폰 앱이나 프로그램을 말한다.

API는 애플리케이션과 기기가 데이터를 원활히 주고받을 수 있도록 돕는 역할을 한다.

  1. API는 모든 접속을 표준화한다.

API는 모든 접속을 표준화하기 때문에 기계/ 운영체제 등과 상관없이 누구나 동일한 액세스를 얻을 수 있다. 쉽게 말해, API는 범용 플러그처럼 작동한다고 볼 수 있겠다.

API는 작은 단위로 응용프로그램에서 사용할 수 있도록

OS나 프로그래밍 언어가 제공하는 기능을 사용/제어할 수 있게 하는 인터페이스를 의미하기도 한다. (날씨 api는 이건 아니다)

자바를 예로 들자면 JDK 1.8에서 추가된 Stream API 가 있다.

여기서의 스트림은 파일 I/O에서 사용되는 스트림과는 다르다. 스트림은 데이터 소스를 추상화하고, 데이터를 다루는데 자주 사용되는 메서드들을 정의해 놓았다. 데이터 소스를 추상화하였다는 것은 데이터 소스가 무엇이든 같은 방식으로 다룰 수 있게 되었다는 것과, 코드의 재사용성이 높아진다는 것을 의미한다.

여기서 Stream이라는 기능을 사용하기 위해 제공된 명세를, API라고 할 수 있다.

(명세에 대해서 이해가 잘되지 않는다면, 자바의 Interface 개념을 생각해 보면 좋을 듯하다)

API에 대한 간단한 설명을 뒤로하고, 이번 글의 주제인 엔드포인트를 이해하기 위해 웹에서 사용하는 API에 대해 알아보자.


3. 웹 API

웹 API는 웹 애플리케이션 개발에서 다른 서비스에 요청을 보내고 응답을 받기 위해 정의된 명세를 일컫는다.

예를 들어 블로그 API를 이용하면, 블로그에 접속하지 않고도 다른 방법으로 글을 올릴 수 있다.

그 외에 우체국의 우편번호 API, 구글과 네이버의 지도 API 등 유용한 API들이 많으므로, 요즘은 홈페이지 구축이나 추가 개편 시 따로 추가로 개발하지 않고 이런 오픈 API를 가져와 사용하는 추세다.

한마디로 서비스 간의 요청과 응답을 위한 명세로 정리할 수 있겠는데,

글 초반부에서 참고한 stackoverflow의 내용과 연결점이 있다.

엔드포인트는 서비스를 사용 가능하도록 하는 서비스에서 제공하는 커뮤니케이션 채널의 한쪽 끝.

즉 요청을 받아 응답을 제공하는 서비스를 사용할 수 있는 지점을 의미한다.

예를 들어 지하철 최단 거리 경로를 제공하는 웹 서비스가 있다고 하자.

이 서비스를 이용하는 사용자는 출발역과 도착역을 설정하고 최단 경로를 찾는 버튼을 누른다.

이때 최단 거리 경로를 구하는 서비스를 이용하기 위한 요청이 향하는 URI가, 엔드포인트이다.

이 웹 서비스는 유효한 형태로 엔드포인트에 요청이 전달되었을 경우 사용자가 알 필요 없는 서비스 내부 로직을 실행하고 응답을 반환한다.


3. API vs Endpoint

결국 API가 두 시스템(어플리케이션)이 상호작용(소통) 할 수 있게 하는 프로토콜의 총집합이라면,

ENDPOINT는 API가 서버에서 리소스에 접근할 수 있도록 가능하게 하는 URL이라 할 수 있겠다.

profile
개발자를 꿈꾸는..

0개의 댓글