개발일지

API, REST API 란? 본문

잡다한 지식

API, REST API 란?

강강강 2022. 11. 7. 21:24

API . Application programming interface 이다.

개발을 하면서 페이스북API, 인스타그램API 와 같이 API 말을 많이 쓰는데 API가 뭘까??

 

흠, 키보드와 비슷하다고 생각하면 쉽다. 키보드는 컴퓨터에 무언가를 입력할 때 사용하는 도구이다. 컴퓨터와 내가 대화할 때 다리 역할을 해준다.

우리가 컴퓨터와 소통할 때 키보드를 쓰는 것처럼 프로그램끼리 소통할 때 쓰는 일종의 규칙을 코드화한 걸 API라고 한다. 

 

우리가 애플리케이션을 만든다고 생각해보자. 화면에 로그인 버튼, 로그아웃 버튼, 사진 업로드 버튼이 있다고 해보자.

사진 업로드 버튼을 누르면 -사진 데이터를 데이터베이스에 저장한다- 와 같은 동작이 이뤄져야 한다.

근데 화면은 버튼을 보여주는 역할만 하고 데이터베이스는 데이터를 저장하는 역할만 한다. 

즉, 버튼이 눌려지면 -어디어디 데이터베이스를 찾아가서 어떻게 저장해라- 와 같은 연결 역할을 해주는 것이 API 다.!!!

 

그렇다면 요즘 REST API라는 말도 많이 들어봤을 텐데..

REST API 란? Representational state transfer API 다.

 

먼저 그냥 API 와 비교하기 위해 REST 없이 API 설계하는 방법을 보자.

 

<인셉션> 으로 영화 URL 설계하기

영화 정보 생성: /createMovie
모든 영화 정보 조회: /seeMovies
특정 영화 정보 조회: /getMovie/inception
특정 영화 정보 삭제: /deleteMovie/inception
특정 영화 정보 수정: /editMovie/inception

위 URL 에는 패턴이 없다는 문제가 있다. 조회하는 기능에 see, get 을 남발하고 있다.

이렇게 단어를 혼용해서 쓸 경우 협업에서 아주 큰 일이 일어난다,, seeMovie 인데 getMovie 로 입력했다면..? 상상은 자유..

 

그래서 REST API 는 특정 규칙이 있다.

- URL 에서 동사 제외하기!

모든 영화 정보 조회: /movies
특정 영화 정보 조회: /movies/inception

근데 동사를 사용하면 안되니 데이터 삭제와 같은건 어떻게 해야할까? 

이럴때 HTTP 메서드를 활용하면 된다!!

 

- HTTP 메서드 도입

HTTP 메서드란 웹 기술을 뜻하는데 쉽게 말해 같은 URL 로 백엔드에서 다른 처리를 할 수 있도록 일종의 갈림길을 만들어 주는 것!!

대표적으로 GET, POST, PUT, DELETE 가 있다. 

그래서 아래와 같이 4가지 작업을 지시할 수 있다. 

GET(조회) /movies/inception
POST(생성) /movies/inception
PUT(수정) /movies/inception
DELETE(삭제) /movies/inception

근데 HTTP 메서드는 다 사용할 필요가 없다. 

이렇게 동사를 사용하지 않음으로 URL 이 단순하게 바뀌고, 특정 영화 정보의 조회, 생성, 수정, 삭제를 한 개의 URL 로 모두 할 수 있다.

그리고 확장 기능도 좋아진다.

 

아래는 영화 <인셉션> 의 배우 정보를 조회하는 API 

GET /movies/inception/actors

이것도 하나의 URL 만 두고 HTTP 메서드 적용해서 데이터의 조회, 생성, 수정, 삭제 기능을 개발할 수 잇을 것이다.

 

또 쿼리도 도입할 수 있다!!

 

평점9.8 점 영화를 조회하려면 어떻게 설계해야 할까??

이때 HTTP 메서드만으로 설계하기 어렵다. 아래처럼 쿼리 파라미터를 사용하면 된다.

 

쿼리 파라미터로 평점 9.8 점 영화 조회하기 , 2022년 영화 조회하기

GET /movies?min+rating=9.8
GET /movies?release_date=2022

 

 

결론적으로 REST API 는 이해하기 쉽고 확장성까지 좋다!!!!! 

직접 설계해보는 것도 아주 큰 도움이 될 것같다.