API, REST API, RESTful API 개념정리

Taeha Kim·2020년 8월 16일
23
post-thumbnail

API, REST API, RESTful API라는 말은 많이 들었는데 무엇인지 모르는 분들, 추상적으로 '이거겠지' 하고 이해하는 정도(제가 여기 포함입니다😥)에서 멈춘분들을 위해서 작성했습니다.

1. API(Application Programming Interface)

API는 '무엇'이다. 라고 처음부터 딱딱하게 서술하기 보다는 비유를 통해서 '아! 이거구나' 하고 감을 잡는게 더 좋아 보여 먼저 비유를 들어서 설명 하겠습니다.

제가 자취방에서 남동생이랑 같이 살고 있는데, 요즘 날씨가 너무 더워서(글작성일 8월 16일)
외출하고 자취방에 들어오면 에어컨을 틀고 찬물로 샤워하러 가는것이 귀가 후에 제가 가장 먼저 하는 일입니다.

그런데 이때 에어컨을 가동하기 위해서 리모컨을 이용해서 에어컨을 구동시키는데 만약에 에어컨한테 말로 '에어컨아 너무 더우니까 온도 18도로 맞춰줄래?' 하면 사람인 동생도 형 말을 안듣는데, 기계인 에어컨은 사람의 음성에 당연히 작동을 안하겠죠...
(흔한 벽걸이형 에어컨인데, 요즘에 나오는 최신 에어컨은 사람의 음성으로도 작동할거 같습니다;;)

자! 여기서 제가 에어컨을 가동하기 위해서는 다음과 같은 과정이 필요했습니다.
사람인 제가 에어컨을 켜기 위해서 리모컨의 버튼을 눌러 에어컨을 켜고, 또 버튼을 눌러서 온도를 18도로 맞췄습니다. 간단하게 나타내면 다음과 같습니다.

  • 나 - 리모컨 - 에어컨

이번엔 동생이랑 같이 외출해서 분식집(김밥XX)을 갔다고 가정하겠습니다.
분식집을 가서 점원에게 떡볶이 2인분을 주문했다고 하면, 10분?정도 지나면 주방에서 떡볶이 2인분이 나오고 점원이 떡뽂이를 가져다 줍니다.

자! 여기서도 저는 주방의 요리사분께 주문을 하지 않았습니다.(에어컨에게 직접 말안한거 처럼)
점원분께 요리 주문을 한거죠. 위의 예시처럼 나타내면 다음과 같습니다.

  • 손님 - 점원 - 요리사

위의 두 예에서 API의 역할에 해당하는 것이 무엇인지 눈치 채셨나요? 눈치 빠르신 분이라면 굵은 글씨가 힌트 라는걸 아셨을 겁니다.

위키백과의 설명을 참조하면

API는 응용 프로그램(애플리케이션)에서 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻합니다.
주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공합니다
.

즉, API는 리모컨과 점원처럼 애플리케이션운영체제 그리고 애플리케이션프로그래밍 언어가 제공하는 기능 사이의 '상호 작용'을 도와줍니다.

웹 API

웹은 기본적으로 요청(request)과 응답(response)으로 작동합니다.

클라이언트쪽에서 요청을 하면 서버에서 응답을 하는것이죠.

웹 API는 웹 애플리케이션 개발을 할때 클라이언트와 서버, 애플리케이션과 애플리케이션등 서로 요청과 응답을 주고 받기 위해서 정의한 API입니다.

예를 들어서 블로그에 글을 써서 올린다고 하면 글을 쓰고, 출간하기,저장하기와 같은 버튼을 클릭해야 하죠. 이 버튼을 누르면 연결된 API에 따라 서버에 글이 저장될 겁니다. 만약 구글 지도 API를 사용하면 구글 지도 웹사이트(https://www.google.com/maps)에 접속하지 않아도 구글 지도를 사용할 수 있습니다.

웹 API의 역할

  • 서버와 데이터베이스안의 리소스에 접근할 수 있게 해줍니다.
    데이터베이스의 정보를 누구나 열람하면 곤란하겠죠? 필요에 의해서만 열람되어야 할겁니다.
    API는 접근 권한이 인가된 사람에게만 서버와 데이터베이스에 접근할 수 있게 합니다.

  • 모든 요청과 응답을 표준화 합니다.
    애플의 아이폰을 쓰던 삼성의 갤럭시폰을 쓰던 상관없이 동일한 API를 사용하기 때문에 클라이언트의 요청과 서버의 응답을 하나의 API로 표준화 합니다.

2. REST API

HTTP Method나 URI라는 용어가 나옵니다. 이게 뭔지 처음 들어보신분은
URI, URL, URNHTTP 기초글을 읽고 오시면 이해하는데 도움이 됩니다.

REST API(REpresentational State Transfer)는 웹상에서 사용되는 여러 리소스를 HTTP URI로 표현하고, 해당 리소스에 대한 행위를 HTTP Method로 정의하는 방식을 말합니다.

쉽게 말해서,
리소스(HTTP URI로 정의됨)를 어떻게 하겠다(HTTP Method + Payload)를 구조적으로 깔끔하게 표현하는 방법입니다.

REST API의 설계 가이드

  • 리소스에 대한 행위는 HTTP Method(POST, GET, PUT, DELETE)로 표현해야 합니다.

  • /(슬래시)는 계층 관계를 나타낼때 사용합니다.

  • URI 마지막 문자에 /(슬래시)를 사용하지 않습니다.

  • URI에 _(underscore)는 사용하지 않도록 합니다. 또한 영어 대문자보다는 소문자를 씁니다.
    그리고 가독성을 위해서 긴 단어는 잘 사용하지 않습니다.

  • URI에 동사는 GET, POST와 같은 HTTP Method를 표현하기 때문이다.
    동사가 아니라 명사를 사용한다.

  • URI에 파일의 확장자(예를들어 .json , .JPGE)를 포함 시키지 않습니다.

3. RESTful API 란?

RESTful API는 REST API 설계 가이드를 따라 API를 만드는것 입니다.

REST API 설계 가이드에 따라 API를 만들어서 웹 서비스를 제공하면 해당 웹 서비스는 RESTful하다고 합니다.

RESTful 하면 뭐가 좋지?

'RESTful'하다는것은 REST API 설계 가이드를 준수한다는 것인데, 'RESTful'하면 뭐가 좋을까요?

  • self-descriptiveness
    : RESTful API는 그 자체만으로도 API의 목적이 무엇인지 쉽게 알 수 있습니다.

따라서

API를 RESTful 하게 만들어서 API의 목적이 무엇인지 명확하게 하기 위해 RESTful 함을 지향 합니다.

profile
함께 성장하는 개발자가 되고 싶습니다.

6개의 댓글

대박...rest api 에 대해서 공부하다가 여러 블로그들을 봐도 개념이 계속 애매했는데 이거보고 이해 바로 됐어요. 천재 신듯

답글 달기
comment-user-thumbnail
2021년 10월 16일

감사합니다.

답글 달기
comment-user-thumbnail
2021년 11월 26일

The motive of providing accounts of all ranges on our platform is to give customers what they demand and what they deserve.

csgo smurf
buy csgo prime accounts
rust accounts for sale

답글 달기
comment-user-thumbnail
2021년 12월 20일

좋은 글 감사합니다! rest API가 뭔지 이해했습니다

답글 달기
comment-user-thumbnail
2022년 8월 11일

감사합니다! 개발 공부 중인 학생인데 너무 속 시원하게 이해가 됐습니다!

답글 달기
comment-user-thumbnail
2023년 7월 27일

유투브 조회수 100만회 짜리 개뚱같은 설명보다 이게 훨씬 낫네요. 감사합니다.

답글 달기