brunch

You can make anything
by writing

C.S.Lewis

by Bennett Jan 28. 2023

API, 우리집 도로명 주소를
쉽게 입력하는 방법

[코드스테이츠 PMB 16기] W7D3

# 아래의 내용은 코드스테이츠 PMB 16기 과정 중 일간 과제를 수행하기 위한 학습 과정입니다.

# 학습 목표 : API의 형식과 특징을 살펴보고 요약해 정리해보기



✔ 시작하며


'도로명 주소 입력', '카카오 로그인', '네이버 로그인', 'ㅇㅇ페이 결제'...

이 글을 읽고 계실 모든 분들은 위에 적혀있는 기능들을 아마 한번쯤은 써 보았을 기능들입니다.


우리가 다양한 IT 서비스를 이용하지만, 최소한 위에 적혀있는 기능들은 우리가 서비스를 이용하는데 좀 더 편리함을 가져다줍니다. 하지만 이러한 편리함은 이용자 뿐만 아니라 제품을 개발하는 프로덕트 팀에게도 편리함을 가져다주곤 합니다. 서비스의 모든 기능들을 하나부터 열까지 다 그때마다 새로 개발해야 한다면, 효율 측면에서도 그렇고 리소스 관리 측면에서도 그다지 좋은 방법은 아닐겁니다.


오늘 이야기 할 API는 이렇게 자주 사용하거나 효율적인 기능들을 모아둔 일종의 규칙으로, 클라이언트와 서버(또는 DB) 사이에서 서로 원활하게 통신할 수 있도록 돕는 요소입니다.


API 개념 설명 / 출처 : 그랩의 IT 뉴스레터

조금 더 쉽게 이야기하자면, API는 식당에서 음식을 주문할 때 활용하는 메뉴판이나 키오스크를 예로 들어 생각하면 이해가 빠를 것 같습니다. 고객이 식당에서 파는 메뉴를 모르는 상태에서 주방에 직접 가서 주문을 한다면 아마 쉽지 않은 과정이 될 것입니다. 고객이 메뉴판이나 키오스크를 통한다면 좀 더 빠르게 주문이 가능할 것입니다. 


오늘은 코드스테이츠 PMB 7주차 3번째 과제로, 누구나 사용할 수 있도록 만들어진 Open API를 알아보는 시간을 가져보려고 합니다.



✔ 어떤 API를 알아볼까


개발 과정에서 많은 API가 활용되지만, 오늘은 이전에 시청에서 공공데이터 인턴에 잠시 참여하면서 API라는 개념을 알게되었을 때 처음 직접 찾아보았던 '도로명주소 검색'을 할 수 있는 '도로명주소 안내시스템' Open API를 이야기해볼까 합니다.


도로명주소 API 실 예시

도로명주소 안내시스템 Open API는 행정안전부에서 진행하는 '주소기반산업지원서비스'의 일환으로 해당 API를 활용해 사용자가 주소를 빠르게 검색할 수 있도록 도와줍니다.


추측의 영역이지만, 아마 2014년 1월 1일부로 모든 문서나 업무 과정에서 도로명주소를 사용하게 되면서 본인의 도로명주소를 알지 못하는 국민들이 많았으리라 생각해봅니다. 그 과정에서 혼란을 줄이고 대국민 서비스 차원에서 해당 서비스가 만들어지지 않았나 생각해보았습니다. 


지금은 다양한 사이트에서 회원가입을 할 때 주소를 입력하는 과정에서 주로 활용되고 있습니다. (구)지번 주소와 도로명주소가 병기되어 있기 때문에 일부 도로명주소가 익숙하지 않는 사용자들도 편하게 활용할 수 있습니다.



✔ API 구성요소


도로명주소 안내시스템 API는 검색을 위해 팝업창을 띄워주고 검색을 도와주는 API검색 결과값을 띄워주는 API, 2가지로 구성되어 있습니다. 


기본적으로 URL 형태로 제공되고 API 요청 URL과 호출시 필요한 요청 변수(파라미터)를 호출하여 작동합니다. 특히 웹 기반의 UI로 작동하기 때문에, 도로명주소 DB 구축 없이 다양한 시스템 환경에서 실시간으로 주소 검색 기능을 구현할 수 있습니다.

  


〈팝업 API 구성요소〉 

팝업 API는 해당 API를 호출(실행)하면 팝업 형식으로 검색창이 새 창으로 열립니다.

그리고 검색어(읍/면/동, 도로명주소 등)를 입력하면 검색값으로 하나의 도로명주소를 선택할 수 있습니다.

결과적으로 하나의 도로명주소에 대한 파라미터 값을 출력 결과로 받을 수 있습니다.

사용자에게 보여지는 형식은 이미 API를 설계하는 과정에서 고정되어있어 개발 과정에서 이부분을 생략할 수 있습니다.




〈검색 API 구성요소〉

검색 API는 팝업 API와 달리 출력 결과를 XML 또는 JSON 형식의 데이터로 받게 됩니다.

그리고 검색어에 대한 모든 결과값을 불러올 수 있으며, 페이지당 출력한 결과 Row 수(한 페이지에 몇개의 주소를 노출시킬 것인가)를 설정할 수 있습니다.

너무 길어서 일부 짤려있음.

〈주소 입력화면 소스〉

그리고 해당 API는 소스코드를 통해 java 기반으로 작성되어 있음을 알 수 있었습니다.

주소입력화면 소스 전체



✔ 마무리하며


개인적으로는 오늘 과제가 작성하면서도 '....??'라는 생각을 하며 과제를 진행했던 것 같습니다. PMB 전체 과정 중 가장 모르는 부분이 많은 상태로 과제를 진행하지 않았나 싶습니다.  


API의 개념은 상식 선에서는 이전에도 알고 있었지만, 실제로 제가 현업에서(개발 과정에서) 어떻게 설명하고 이해하고 소통해야하는 지는 다른 문제였습니다. 상식이 지식으로 바뀌어야 하는데 아직 그 단계를 넘지는 못했던 것 같습니다. 오늘은 스스로에게 조금은 화도 나고 아쉬운 것 같습니다. 


개인적으로도 PMB 참여기간 중 컨디션이 가장 안좋았던 날이라 더 학습내용이 이해가 안된 상태로 넘어갔다는 변명도 끄적여보지만, 그래도 이해 못한 건 저의 부족함 탓이었습니다. 특히 과제를 진행하면서 내용을 조금씩 이해해가고 있었는데, 인터넷에 나와있는 자료들도 설명하기 위해 쓰는 용어나 배경 자체가 낯설게 느껴져 이해가 많이 어려웠고, 조금 시간이 필요하다 느꼈습니다. 이 부분은 추가적으로 다시금 개인 학습을 통해 추가적인 이해를 꼭 하겠노라고 여기에 다짐을 해봅니다. 


과거 코딩 공부를 하다가 내려놓았던 흑역사가 새삼 생각나 이 글을 쓰는 순간에도 기분이 썩 좋지는 않지만! PM은 포기하지 않고 문제를 해결하기 위한 역할을 해야하기에 추후 남는 시간을 통해 이해하려고 합니다. 예전과 같았다면 밤새 이 문제를 해결하기 위해 노력했겠지만... 공부도 마라톤이니까요...^^;; 자고 하겠습니다.


(강사님께 드리는 메시지 : 어떤 부분을 정확히 모른다라고 이야기하기 어려울만큼 배운 내용을 과제로 풀어내는 게 좀 어려웠던 것 같습니다. 과제 과정에서 자료를 보며 이해한다고 했지만, 실제로 API 문서를 이해하는 건 좀 다른 영역인 것처럼 느껴졌습니다.)


#PM부트캠프 #코드스테이츠

                    

매거진의 이전글 대한민국 구석구석, 앱 유형을 구석구석 뜯어보기
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari