누군가 나에게 "API가 뭐야?" 라고 물어본다면, 요청을 통해 원하는 데이터들을 얻는 것이라고 대답할 것이다. 개념을 잘 모르기 때문에 얼버무려서 이런 대답이 나온다고 생각했다. 그래서 API, REST API가 무엇인지 내 머릿속에 정리하기 위해 포스팅을 통해 공부하려고 한다.
이미지 출처 : 구조 img
한번은 들어봤던 단어지만, 개념을 정확히 설명할 수 없는 사람들도 꽤 있을 것이다. (그중에 본인도 포함이다)
REST API를 파헤쳐보기 전에 API가 무엇인지 살펴보자.
API(Application Programming Interface 애플리케이션 프로그래밍 인터페이스, 응용 프로그램 프로그래밍 인터페이스)는 컴퓨터나 컴퓨터 프로그램 사이의 연결이다. 일종의 소프트웨어 인터페이스이며 다른 종류의 소프트웨어에 서비스를 제공한다
API 위키백과
여기서 인터페이스는 서로 다른 두 개의 시스템이 소통할 때의 접점(=매개체)이다. 이해가 잘 되지않는다. 예시를 들어보자.
밑에 그림처럼 기상청 서버(파란박스)에게 얻고싶은 정보(date, place 등)를 표시하여 주소로 요청한다. "17degree"라는 답이 올 것이라는 공개된 메뉴얼이 있으면 누구든 이를 활용해 기상청 정보를 활용해 소프트웨어를 만들 수 있다.
이미지 출처 : API Youtube
즉, 소프트웨어가 다른 소프트웨어로부터 지정된 형식으로 요청, 명령을 받을 수 있는 수단을 API라고 한다.
수단은 위에서의 인터페이스라고 생각하면 될 것 같다.
프론트엔드 웹에서 서버에 데이터를 요청하거나 배달 앱에서 서버에 주문을 넣는 등의 서비스들에서 최근 널리 사용되는 것이 REST란 형식의 API이다.
각 요청이 어떤 동작이나 정보를 위한 것인지를 그 요청의 모습 자체로 추론 가능하다. 즉, RESTful하게 만든 API는 요청을 보내는 주소만으로도 어떤 요청인지 대략 파악이 가능하다는 뜻이다.
기능만 중요하게 생각하면 동작만 하면 되므로 REST를 안써도되지만, 만약 사용하지 않는다면 나중에 이 API를 이용하는 개발자는 힘들 것이다.
이 4개를 가지고, CRUD=Create, Read, Update, Delete를 할 수 있다.
이미지 출처 : CRUD img
REST API로 서버에 요청을 보낼 때, HTTP의 규약을 따른다. POST, GET, PUT, DELETE, (PATCH)의 메소드를 사용한다는 뜻이다.
POST, PUT, PATCH에는 body라는 주머니가 있어서 GET, DELETE보다 많은 정보를 보낼 수 있고, 더 안전하다.
각각의 기능들이 어떤 용도에 사용하도록 제한되어 있지 않다. POST로 read/ write/ delete/ update를 모두 할 수 있다. 그러나 위에서 말했듯이 각 요청의 의도를 쉽게 알도록 API를 만들기 위해서는 개발자가 목적에 따라 사용해야한다.
이미지 출처 : Method img
GET : 데이터를 조회하는데 사용한다.(READ)
ex) http://(도메인)/computer/languages 를 통해 컴퓨터의 언어들을 본다는 요청이라는 것을 알 수 있다.
POST : 새로운 정보를 추가하는데 사용한다.(CREATE)
ex) http://(도메인)/computer/languages 이렇게 URI를 만들어 post 요청을 통해 body에 새로운 language를 담아 보낸다.
PUT(PATCH) : 정보를 수정하는데 사용한다.(UPDATE)
POST 처럼 body에 담아서 보내는 것은 똑같지만, http://(도메인)/computer/languages/javascript 에서 javascript를 추가하여 수정할 새 정보를 body에 담는다.
DELETE : 정보를 삭제하는데 사용한다. PUT 방식과 같다.
여기서 put은 정보를 통째로 바꿀때, patch는 정보 중 일부를 변경할 때 사용한다.
HTTP 요청을 보낼 때 어떤 URI에 어떤 메소드를 사용할지 개발자들끼리 지켜지는 약속이다.