본문 바로가기
코드스테이츠 PMB Daily

[코드스테이츠 PMB 15] W7D3 네이버 캘린더 API 분석

by 애플맹고 2022. 11. 30.
반응형

1. 네이버 오픈 API

네이버 개발자 센터(Naver Developers)에서 네이버에서 사용할 수 있는 오픈 API를 제공한다. 해당 페이지를 둘러보고 네이버에서 제공하는 오픈 API에 대하여 정리해보았다.

 

NAVER Developers

네이버 오픈 API들을 활용해 개발자들이 다양한 애플리케이션을 개발할 수 있도록 API 가이드와 SDK를 제공합니다. 제공중인 오픈 API에는 네이버 로그인, 검색, 단축URL, 캡차를 비롯 기계번역, 음

developers.naver.com

네이버 오픈 API 목록(출처=네이버 개발자 센터)

네이버에서 현재 제공하는 오픈 API 목록은 위 사진과 같다. 목적에 따라 API를 활용할 수 있으나 일부 API는 일일 호출 회수 제한이 있어 자세한 내용은 네이버 API 서비스 이용약관(링크)을 참고해야 한다.

 

 

네이버 오픈 API 종류

네이버가 제공하는 API는 크게 네 종류가 있다. 네이버 자체 개발 인공지능 플랫폼 CLOVA, 네이버 외 서비스에서 네이버의 인증 기능을 이용할 수 있는 네이버 로그인, 네이버가 자체 개발한 다국어 번역 플랫폼 파파고, 그리고 기타 서비스인 서비스 API로 구분한다.

 


2. 네이버 캘린더

 

위에서 본 네이버 오픈 API 중 내가 자주 사용해서 익숙한 네이버 캘린더를 분석해보고 싶었다. 네이버의 다른 서비스나 일정 공유할 때 쓰면서 편리함을 느꼈는데 내심 이번에 분석하면서 새로운 기능을 발견하면 좋겠다는 생각을 갖고 네이버 캘린더는 어떤 오픈 API를 사용하는지 분석해보았다.

 

 

캘린더 - INTRO

캘린더 NAVER Developers - 캘린더 API 소개 캘린더 API를 통해 네이버 로그인한 유저의 네이버 캘린더에 일정을 등록하고 일정 미리 알림을 받을 수 있습니다. 1200만 다운로드에 빛나는 1위 캘린더앱

developers.naver.com

 

네이버 캘린더 일정 추가 API 설명

네이버 사용자 캘린더에 일정을 추가할 수 있는 로그인 오픈 API로서 REST API의 형태를 갖고 있다. 요청 URL과 요청 변수로 호출하는 방법을 사용하고 OAuth 2.0 인증 기반이므로 추가적으로 네이버 로그인 API를 통해 접근 토큰(access token)을 발급받아, HTTP로 호출할 때 Header에 접근 토큰을 같이 전송해야 활용할 수 있다.

 

네이버 로그인 API를 필요로 하는 이유는 캘린더에 생성한 일정을 로그인 정보와 연동하여 DB에 저장하기 때문일 것으로 추측한다.

 

네이버 캘린더 일정 생성 API 호출 예제(Java)

 

Java로 구현할 경우 API에 포함하여야 하는 요소는 일정 고유 아이디, 시작 일시, 종료 일시, 일정 제목, 일정 상세 내용, 장소, 일정 반복시 설정, 일정 만든 사람, 참석자, 일정 생성시각, 일정 수정시각, 일정 타임스탬프가 있어야 한다.

 

일정 생성시 API의 기본 정보는 아래와 같다.

매서드 인증 요청 URL 출력 포맷 설명
POST OAuth 2.0 https://openapi.naver.com/calendar/createSchedule.json json 캘린더 일정 추가

 

조사하면서 발견한 사실인데 네이버 캘린더 API가 아니라 네이버 캘린더 일정 추가 API인 이유는 위 API를 활용해서 일정 생성만 할 수 있다는 점이었다. 바꿔 말하면 일정을 수정하고 싶을 때(일부 수정, PATCH), 기존에 생성된 일정을 가져오기(불러오기, GET)는 할 수 없었다. 수정 혹은 불러오기 기능을 사용할 때도 있을텐데 왜 오픈 API는 일정 추가(POST)만 가능할지 궁금했다. 예를 들어 공식적인 미팅 일정을 해당 기능을 통해 만들었는데 일정이 변경된다면 새로운 일정을 공유하고, 기존에 있는 일정은 스스로(?) 없애야 한다면 번거로울텐데 추후에 해당 부분을 더 찾아봐야겠다.

 

(추가) 일정 공유 기능.ics라는 확장자 명으로 가능하다고 한다. (링크)

 

네이버 오픈 API 목록(출처=https://naver.github.io/naver-openapi-guide/apilist.html)

네이버 오픈 API 목록 Github에 들어가서 찾아봤으나 캘린더는 POST 기능밖에 없는 것을 볼 수 있다.

 

(1) 네이버 캘린더 오픈 API를 실제 제품 개발에 활용하기 위한 방안

1) 오픈 API를 실제로 활용한 예시

 

캘린더 프로덕트의 특성상 실제 제품 개발에 활용하기는 적절하지 못하다고 생각해서 대신 캘린더의 일정 생성 기능을 활용해서 회의 일정을 생성하고 공유하는 기능을 떠올렸다.

SUMMARY:%5B%EC%A0%9C%EB%AA%A9%5D+%EC%BA%98%EB%A6%B0%EB%8D%94API%EB%A1%9C+%EC%B6%94%EA%B0%80%ED%95%9C+%EC%9D%BC%EC%A0%95 %0A\
DESCRIPTION:%5B%EC%83%81%EC%84%B8%5D+%ED%9A%8C%EC%9D%98%ED%95%A9%EB%8B%88%EB%8B%A4. %0A\
LOCATION:%5B%EC%9E%A5%EC%86%8C%5D%20%EA%B7%B8%EB%A6%B0%ED%8C%A9%ED%86%A0%EB%A6%AC %0A\

참고: %0A는 줄 바꿈(\n)을 의미하며, \는 쉘 커맨드 창에서 한 줄을 여러 줄로 나누어 입력하기 위해 사용

 

  • SUMMARY: [제목] 캘린더API로 추가한 일정
  • DESCRIPTION: [상세] 회의합니다.
  • LOCATION: [장소] 그린팩토리

2) iCalendar 데이터 형식으로 변환

 

인터넷 사용자들이 다른 인터넷 사용자들에게 전자 메일을 이용하여 미팅 요청과 할 일을 보내거나 .ics 확장자로 파일들을 공유할 수 있게 해 주는 컴퓨터 파일 형식이다. iCalendar 데이터 파일을 받은 사람들은 이메일 클라이언트캘린더 프로그램 따위를 이용하여 보낸 이에게 쉽게 응답할 수 있고 역으로 다른 미팅 일정을 제안할 수 있다.

 

iCalendar을 활용한 API 샘플 코드와 코드 설명은 링크를 통해서 확인할 수 있다.


3. 과제를 하면서 배운 것

사실 API는 개발자가 주로 다루는 영역이라 PM으로서 소통하기 위한 지식 수준을 달성하는 것을 목표로 했다. 그러나 오픈 API를 구현하는 코드를 보니 코딩 까막눈인 나로서는 어떻게 구성되는지 논리를 이해하지 못해 여러 자료를 읽어보면서 감을 잡았다. 네이버 뿐만 아니라 카카오도 국내 오픈 API 서비스를 제공하는 기업 중 하나인데 둘 다 공통적으로 처음 사용하는 사람에게도 잘 이해할 수 있게 쉽게 설명해놓았다. 하나씩 분석해보면서 천천히 익혀가야겠다.

 

네이버 캘린더 일정 추가 API 설명(링크)에서는 REST API 기능이라고 했는데, REST API라고 해서 반드시 CRUD(Create, Read, Update, Delete)가 모두 포함되어야 하는 건 아니라는 걸 해당 사례를 통해 알았다.

반응형

댓글