본문 바로가기
개발자 전향 프로젝트

API 와 REST API에 대해

by 샘오리 2022. 7. 27.
728x90
반응형

개발을 좀 배웠다 하는 사람들은 API라는 단어를 무수히 많이 듣게 된다. 

문맥상으로 API라는게 대충 어떤건지 유추하면서 얼렁뚱땅 넘어가게 되다보니

막상 누가 API가 뭐야? 라고 물었을 때 정확하게 대답하기가 어렵다.

 

그럼 오늘은 그 API가 무엇이고 REST한 API는 또 무엇인지 알아보는 시간을 가져보자.

 

먼저 API는 하나의 소프트웨어가 다른 소프트웨어로부터

지정된 형식으로 요청, 명령을 받을 수 있는 수단을 의미한다.

 

예를 들어서 우리가 날씨 어플을 통해 오늘 날씨를 알아본다고 가정해보자. 

요 날씨 어플은 과연 어떻게 날씨 정보를 받아올 수 있을까?

 

바로 날씨 정보를 제공하는 기상청 홈페이지에서 정보를 쏙 받아오는 것이다.

기상청 홈페이지는 날씨 데이터를 정해진 틀을 통해 제공하고 날씨 어플은 정해진 틀을 통해 날씨 데이터를 제공받는다. 이렇게 두 소프트웨어간에 어떤 지정된 형식의 통신을 Application

Programming

Interface

라고 한다.

 

그렇다면 REST 한 API는 무엇일까? 

말 그대로 휴식중인 API라는 말일까? 일리있ㄴ..

REST API의 정의는 다음과 같다. 

HTTP 요청을 보낼 때 어떤 URI에 어떤 메소드를 사용할지 널리 지켜지는 약속

 

 *HTTP : 인터넷에서 데이터를 주고받을 수 있는 프로토콜 혹은 규칙.
 *URI : 주소 끝부분에 들어가는 고유 식별자 혹은 구분자.


이 말은 즉슨, REST한 API는 인터넷이나 웹을 통해 기기와 기기가 통신을 할 때 
지켜지는 어떤 형식인 것이다. API와 거의 유사하다. API는 반드시 인터넷을 사용하지 않아도 내부적으로 가능한 반면 REST는 HTTP를 이용한다는 특징이 있다.

예를 들어 

우리가 통상 물건을 보낼 때 보내는 사람의 이름, 보낼 주소, 받을 사람의 이름과 연락처 등을 적는다.

왜 그럴까? 

만약 물건을 보낼 때 이렇게 정해진 양식이 없으면 누구는 배송지를 수령인 집 주소로 적을 것이고 누구는 받는사람 주소로 적을 것이고 누구는 수령지로 적을 것이다.

이런 사소한 것도 명칭이 다르면 혼선을 야기시킬 수 있다.

 

마찬가지로 데이터 통신을 할 때도 어떤 양식을 정해두는 이유는

인터넷을 사용하는 기기간 데이터 통신을 원활하게 하기 위해서이다.

정의는 그렇다 치고 REST API는 어떻게 쓰는 것일까?

 

첫째, 바로 고유 식별자의 역할을 하는 URI에 동사를 모두 명사로 바꾼다.

예를 들어 동네 병원 목록을 조회하는 링크의 uri 를 생각해보자.

어떠한 형식 없이는 개발자 마음대로 /searchHospital , /showHospital, /locateHospital 등등 네이밍이 다 다를 수 있다. 그래서 개발자들은 하나의 약속을 정했다. 제일 먼저 동사를 없애는 것이다. 동사를 없애고 명사만 남기게 되면 Hospital만 남게 되고 혼선이 적다. 

 

둘째, 고유명사가 아닌 일반 명사인 경우 복수를 사용한다.

Hospital 대신에 Hospitals, Class 대신에 Classes로 명사를 사용할 때 기본적으로 복수를 사용한다.

 

셋째, HTTP 표준 메소드를 사용한다. 

 

대표적인 메소드는 다음과 같다.


GET:  정보를 조회할 때
POST : 정보를 생성할 때/ 추가할 때
DELETE : 정보를 삭제할 때
PUT : 기존 정보를 통째로 수정할 때
PATCH : 기존 정보중에 일부분만 수정할 때

PUT 과 PATCH의 차이

예: 게임에서 박지성 선수의 신체정보를 수정할 수 있고 수정한다고 가정했을 때 그 사람의 키만 수정하고 싶다면, PUT 대신 PATCH 를 써서 수정할 수 있다. 하지만 박지성이라는 선수를 아예 통채로 수정할 땐 PUT을 쓰면 된다.

 

이처럼 CRUD와 관련된 메소드도 정해진 용어와 용도가 있다.

728x90
반응형