PMB_15기/DAILY

[코드스테이츠 PMB 15기_W7D3] API의 개념과 카카오 로컬 주소 검색 Open API 알아보기

메리트리 2022. 11. 30. 17:26
API 오픈 API를 탐색하고, 제공하는 기능과 구조 살펴보기

 

오늘은 API에 대해서 배웠는데요. 

이와 관련하여 오늘 과제는 오픈 API를 탐색하고, 제공하는 기능과 구조 살펴보기입니다. 

그전에  개념 3가지 API, Open API, RESTful API에 대해서 살펴보고자 합니다. 


API가 뭐예요?

API란 Application Programming Interface의 줄임말로 '애플리케이션'을 ‘프로그래밍’ 하는데 필요한 ‘인터페이스’입니다. 여기서 인터페이스란 말 그대로 어떤 기계간의 장치끼리 정보를 교환하기 위한 수단이나, 방법을 의미하는 두 애플리케이션 간의 서비스 계약이라고 할 수 있는데요. 이 계약은 요청과 응답을 사용하여 두 애플리케이션이 서로 통신하는 방법을 정의합니다. 

 

자료 서칭 중 너무 쉽게 잘 설명되어 있는 레스토랑 예시를 그려보았습니다. 

 

그림을 보시고 이해가 되실까요? 조금 더 부가 설명을 하면 API 역할을 하는 웨이터는 손님의 주문을 주방으로 전달하는 매개체 즉 인터페이스 역할을 하는 거죠. 그리고 여기서 손님은 주방에서 무슨 일이 일어나는지 잘 모르고 관심도 없고 단지 내가 주문한 피자만 잘 나오면 되는데요. 이것이 바로 API의 장점입니다. 내가 가져다쓰려고 하는 API의 기능을 어떻게 구현하는지 몰라도 API를 사용만하면 되니깐 시간과 노력을 아낄 수 있는 장점이 있는 거죠. 

 

Open API가 뭐예요?

API의 개념을 알았다면 Open이 붙은 Open API에 살펴보면,  Open API는 하나의 웹 사이트에서 자신이 가진 기능을 이용할 수 있도록 공개한 프로그래밍 인터페이스입니다. 쉽게 open되어있으니 누구나 사용할 수 있도록 공개된 API를 말하는데요. 데이터를 표준화하고 프로그래밍해 외부 소프트웨어 개발자나 사용자가 바로 개발(어프리케이션)에 활용할 수 있는 형태의 개방 형식으로 다양하고 서비스나 애플리케이션, 다양한 형태의 플랫폼을 개발할 수 있습니다.

 

현재 Open API는 많은 곳에서 제공하고 있는데요. 주요 국내 대기업인 네이버카카오 주요 해외 대기업 구글마이크로소프트 등 그리고

공공 기관 공공 데이터 포털 등이 있습니다. 

 

RESTful API가 뭐예요?

API를 아무리 잘 설계한다고 하더라도 각자 필요한 방식에 맞게 다양하게 설계하면 유지보수하는데 어려움이 있을 수 있습니다. 이런 문제를 해결하기 위해 일정한 아키텍처의 제약 조건을 준수하는 애플리케이션 프로그래밍 인터페이스를 만들어 사용하기로 하였는데 그중 대표적인 방식이 RESTful API입니다.

그리고 REST vs RESTful 뭐가 다르지 하실 수 있는데요

RESTful은 일반적으로 REST라는 아키텍처를 구현하는 웹 서비스를 나타내기 위해 사용되는 용어로 ‘REST API’를 제공하는 웹 서비스를 ‘RESTful’하다고 할 수 있습니다.

구체적인 개념으로는 HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미합니다.

 

💡CRUD Operation

  • Create : 생성(POST)
  • Read : 조회(GET)
  • Update : 수정(PUT)
  • Delete : 삭제(DELETE)
  • HEAD: header 정보 조회(HEAD)

개념 3가지 API, Open API, RESTful API 대해 학습했다면, 다음으로는 현재 공개되어 있는 오픈 API를 탐색해 보도록 하겠습니다. 

앞서 말한 다양한 제공처가 있는데요. 저는 이전 과제에서 한번 다룬 카카오맵과 관련하여 카카오에서 제공하는 오픈 지도/로컬 오픈 API을 탐색해보고자 합니다. 

 

 

[코드스테이츠 PMB 15기_W2D2] 내가 카카오맵을 사용하는 이유

고객이 우리 서비스를 사용하는 근본적인 이유는 무엇일까 오늘은 JTBD(Jobs-To-be-Done)에 대해서 배웠습니다. JTBD란 특정 상황에서 고객이 해결하고자 하는 문제에 포커싱한 고객의 문제에 접근 방

03minji13.tistory.com


1. 카카오 지도/로컬 API가 제공하는 기능 소개

🤔 카카오 로컬 API가 궁금한 사람 ~ 드루와~~

 

카카오에서 제공하는 내용을 기반으로 간단하게 요약하고 정리해보았습니다. 

 

📍로컬(local) API는 키워드로 특정 장소 정보를 조회하거나, 좌표를 주소 또는 행정구역으로 변환하는 등 장소에 대한 정보를 제공합니다.

특정 카테고리로 장소를 검색하는 등 폭넓은 활용이 가능하며, 지번 주소와 도로명 주소 체계를 모두 지원하는데요.

 

🗺️ Kakao 지도 API는 Web(JavaScript)과 모바일 애플리케이션(Android, iOS)에서 지도를 이용한 서비스를 제작할 수 있는 기능을 제공합니다. 지도 위에 마커를 올려서 특정 장소를 표시할 수 있고, 실제 주변을 확인할 수 있는 로드뷰 제공 등 다양한 기능을 제공하고 있습니다. 

 

그런데, 

지도는 REST API 미 지원하여 SDK로만 이용할 수 있습니다.  반면, REST API 방식으로는 로컬 API를 통해 다양한 장소 정보를 활용할 수 있습니다. 그러니... 우리는 REST API 지원하는 로컬 API에 대해서 탐색해보겠습니다.

 

🔎 SDK란?

** Software Development Kit의 약자로  소프트웨어 개발 도구 모음이라고 합니다. SDK 안에는 개발에 도움이 될 개발 도구 프로그램, 디버깅 프로그램, 문서, API 등이 있습니다. 이때 SDK는 망치, 팬치 니퍼 등이 들어 있는 하나의 공구박스라고 하면,  API는 그중 망치만을 말합니다. 그러니 SDK가 더 큰 개념이라고 할 수 있습니다. 

 

그렇다면 로컬 API가 지원하는 기능을 알아보겠습니다. 

현재 로컬 API는 주소 검색, 좌표-행정구역 정보 변환, 좌표-주소 변환, 좌표계 변환, 키워드 검색, 카테고리 검색 기능을 제공하고 있습니다. 

 

 

2. 카카오 로컬 REST API 

🤔 카카오 로컬 REST API에 대해서 살펴보겠습니다. 

 

카카오에서 제공하는 문서를 보면, 위에 설명한 로컬 기능에 따라 설명을 상세하게 해주고 있는데요. 

제일 처음에 소개된 기능 주소 검색 기능에 대해서 자세하게 살펴보겠습니다. 

 

주소 검색 기능은 주소를 지도 위에 정확하게 표시하기 위해 해당 주소의 좌표 정보를 제공하는 API입니다. 주소에 해당하는 지번 주소, 도로명 주소, 좌표, 우편번호, 빌딩명 등의 다양한 정보를 함께 제공합니다. 이 API는 지번 주소, 도로명 주소 모두 지원합니다.

애플리케이션(이하 앱) REST API 키를 헤더에 담아 GET으로 요청합니다. 검색어와 함께 결과 형식 파라미터의 값을 선택적으로 추가할 수 있습니다. 응답은 JSONXML 형식을 지원합니다. 요청 시 URL의 ${FORMAT} 부분에 원하는 응답 형식을 지정할 수 있습니다.

별도로 포맷을 지정하지 않은 경우 응답은 JSON 형식으로 반환됩니다.

 

 

그리고 카카오에서 매개변수, 메타, 문서, 주소를 제공하고 있습니다. 

이는 우리 이렇게 매개변수,메타, 문서, 주소 형식에 대해 정해진 규격을 사용하자고 약속하는 거예요 🤙🏻 

 

 

다음으로는 들어오는 요청과 응답에 대한 내용을 탐구해볼 텐데요.

우선  HTTP 프로토콜,  HTTP 프로토콜 HTTP Message에 대해 개념을 알아야 합니다. 

 

🔎 HTTP 프로토콜이란?

** HTTP(Hypertext Transfer Protocol)는 통신 프로토콜입니다. 프로토콜이란 상호 간에 정의한 규칙을 의미하며 특정 기기 간에 데이터를 주고받기 위해 정의되었습니다. 통신 프로토콜을 쉽게 풀어보면 “나는 이렇게 줄 테니 넌 이렇게 받고 난 네가 준거 그렇게 받을게” 로 이해시면 됩니다. 현재 웹에서는 브라우저와 서버 간에 데이터를 주고받기 위한 방식으로 HTTP 프로토콜을 사용하고 있습니다. 그리고 HTTP 프로토콜로 데이터를 주고받기 위해서는 아래와 같이 요청(Request)을 보내고 응답(Response)을 받아야 합니다.

 

출처 : nGyu / API, 요청과 응답은 어떻게 흘러갈까?

 

중간 HTTP Message는 Requset, Response로 나뉘게 되는데 이 둘의 구조는 똑같고 startLine, headers, emptyLine, body로 4등분이 됩니다. 

 

 

카카오의 주소 검색 REST API의 예시를 제공하고 있는데요. 

배운 내용을 기반으로 이렇게 생겼구나 정도,,, 확인해보았습니다. 

 


글을 마치며, 

 

정말 개발 지식 어질어질합니다..

오늘 과제 수박 겉핥기 느낌 약간 50%인데요..

그래도 API, Open API, RESTful API 개념에 대해서는 정확하게 알 수 있어서 좋았던 것 같습니다. 

그리고 추가로 카카오 오픈 API를 탐색해보았는데요. 이외에도 다양한 기업 및 공공포털에서 제공하는 오픈 API도 이후에 살펴보고 싶었습니다. 

 

앗 그리고 검색하던 중 토스의 오픈 API를 살펴보았는데요

토스는 언어별로 request를 제공하고 있었어요🫢 

신기해서 들고 와 봤습니다..!!

 


| 출처

 

https://dev-dain.tistory.com/50

 

봐도봐도 모르겠는 API 개념 설명 (Application Programming Interface)

✔️ 부정확한 내용이 포함되어 있다는 피드백을 받았습니다. 글은 나중에 다시 수정할 예정인데, 우선 댓글창을 확인해주시면 더 정확하게 이해하실 수 있을 것 같습니다. 감사합니다 ^^ 컴퓨

dev-dain.tistory.com

https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html

 

[Network] REST란? REST API란? RESTful이란? - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

https://developers.kakao.com/docs/latest/ko/local/common#api-list

 

Kakao Developers

카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.

developers.kakao.com

https://velog.io/@vpdls1511/API-%EC%9A%94%EC%B2%AD%EA%B3%BC-%EC%9D%91%EB%8B%B5%EC%9D%80-%EC%96%B4%EB%96%BB%EA%B2%8C-%ED%9D%98%EB%9F%AC%EA%B0%88%EA%B9%8C

 

API, 요청과 응답은 어떻게 흘러갈까?

API가 단순히 클라이언트와 서버의 상호작용에서 끝나는걸까? API가 무엇인지, 어떤 흐름인지 알아보자!

velog.io