*본 게시글은 PC환경에서 보시기를 권장드립니다.
API개념과 오픈API, Restful API
API란 애플리케이션'을 ‘프로그래밍’하는 데 필요한 ‘인터페이스’를 일컫는 말로 프로그램과 프로그램을 연결시켜주는 매개체, 즉 창구를 말한다. 은행을 예로 들자면 대출을 받기 위해서는 '대출 창고'를 이용하고 입출금 업무를 위해서는 '입출금 창구'를 통해 업무를 진행하듯 어떠한 요청을 하고 그에 맞는 데이터를 얻기 위해 거쳐야하는 관문이다.
그렇다면 오픈API는 무엇일까?
말 그대로 오픈된 형태의 api로, 이용자가 일방적으로 웹 검색 결과 및 사용자인터페이스(UI) 등을 제공받는데 그치지 않고 직접 응용 프로그램과 서비스를 개발할 수 있도록 공개된 API를 말한다.예를 들면 기상청에서 제공하는 날씨api, 카카오,구글,네이버같은 대기업에서 제공하는 지도api 등 대기업에서는 시장 확대를 목적으로 오픈 API를 운영하거나 공공의 목적으로 비영리기관에서 무료로 API를 제공하는 경우가 있다고 한다.
+로 Restful API란 API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처로 가장 널리 쓰이는 형식이며 일정한 제약 조건을 준수하는 API를 만들어 사용하기로 개발자들끼리 한 약속이라고 한다.
그 중에서도 ful 즉, 100% 완벽한 규칙의 아키텍쳐를 가진 것이 Restful API이다. (그것이..약속..이니까)
RESTful API의 종류는 총 4가지로 구분지을 수 있다.
- C : Create : 타임라인에 사진을 '올리는' 요청 - POST(생성)
- R : Read : 사진을 '불러오는' 요청- GET(읽어오기)
- U : Update : 사진을 '바꾸는' 요청 - PUT(전체)/PATCH(일부)
- D : Delete : 사진을 '지우는' 요청 - DELETE(삭제)
카카오 Open API를 탐색하고, 제공하는 기능과 구조 살펴보기
네카라쿠배에서 1,2위를 다투는 머기업 카카오에서는 카카오 디벨로퍼 홈페이지를 통해 다양한 오픈api를 제공하고 있다.
카카오에서 제공하고 있는 여러 오픈 api 중에 오늘은 최근 잘 이용하고 있는 카카오톡 캘린더 api를 살펴보기로 하자.
카카오톡 캘린더는 해당 오픈 API를 활용하여 사용자가 본인의 캘린더에 일정을 추가하고 관리할 수 있는 기능을 제공하며 카카오톡 채팅방에서 친구들과 쉽고 빠르게 일정을 만들고, 편리하게 모아볼 수 있는 서비스다.
카카오톡 채널 관리자는 마케팅영역이 포함된 일정을 공유해 광고 효과를 더욱 높일 수 있는 효과도 있다고 한다.
▶ 사용 흐름
▶ 제공 기능
- 사용자 캘린더: 사용자가 직접 관리하는 캘린더의 생성, 목록 가져오기, 수정, 삭제 기능을 제공
- 일반 일정: 사용자가 직접 관리하는 일정의 생성, 목록 가져오기, 상세 조회, 수정, 삭제 기능을 제공
- 공개 일정: 카카오톡 채널이 마케팅 목적으로 만든 일정의 생성, 목록 가져오기, 상세 조회, 수정, 삭제, 사용자 캘린더에 추가 기능을 제공
- 구독 캘린더: 카카오톡 채널 관리자가 발행하고 관리하는 관심사 기반 캘린더의 목록 가져오기, 구독, 구독 해제 기능을 제공
- 공유 캘린더(지원 예정)
- 캘린더 메세지: API를 활용해 사용자가 카카오톡 나와의 채팅 또는 친구에게 캘린더 메세지를 보내는 기능으로 서비스의 구독 캘린더나 공개일정을 사용자 캘린더에 추가하는 기능을 제공
*현재 캘린더 메세지는 카카오톡 메세지 API와 카카오톡 공유 API로 전송 가능
▶ 지원 기능
Permission: 권한이 있어야 사용할 수 있는 API
< 기능API 설명가이드 >
사용자 캘린더 | 목록 가져오기 | 사용자의 캘린더 목록을 가져옵니다. | REST API |
생성하기: 서브 캘린더 | 사용자의 캘린더에 새로운 서브 캘린더를 생성합니다. | REST API | |
수정하기: 서브 캘린더 | 사용자의 특정 캘린더 설정을 수정합니다. | REST API | |
삭제하기: 서브 캘린더 | 사용자의 특정 캘린더를 삭제합니다. | REST API | |
일반 일정 | 생성하기 | 사용자의 특정 캘린더에 일반 일정을 생성합니다. | REST API |
목록 가져오기 | 사용자의 특정 캘린더에 등록된 일정 목록을 가져옵니다. | REST API | |
상세 조회하기 | 사용자의 일반 일정 정보를 조회합니다. | REST API | |
수정하기 | 사용자의 일반 일정 정보를 수정합니다. | REST API | |
삭제하기 | 사용자의 일반 일정을 삭제합니다. | REST API | |
공개 일정 Permission |
생성하기 | 카카오톡 채널의 공개 일정을 생성합니다. | REST API |
목록 가져오기 | 카카오톡 채널의 등록된 공개 일정 목록을 가져옵니다. | REST API | |
상세 조회하기 | 카카오톡 채널의 공개 일정 정보를 조회합니다. | REST API | |
수정하기 | 카카오톡 채널의 공개 일정 정보를 수정합니다. | REST API | |
삭제하기 | 카카오톡 채널의 공개 일정을 삭제합니다. | REST API | |
사용자 캘린더에 추가하기 | 공개 일정을 사용자 캘린더에 추가합니다. | REST API | |
구독 캘린더 Permission |
구독 가능 캘린더 목록 가져오기 | 특정 카카오톡 채널의 구독 가능 캘린더 목록을 가져옵니다. | REST API |
구독하기 | 구독 가능 캘린더를 사용자 캘린더에 추가합니다. | REST API | |
구독 해제하기 | 사용자가 구독 중인 캘린더를 구독 해제합니다. | REST API | |
게스트 일정 | 수정하기 | 사용자의 특정 캘린더에 추가한 일정을 수정합니다. | REST API |
공휴일 및 주요 기념일 조회하기 | 법정공휴일과 톡캘린더 서비스에서 지정한 일부 기념일 목록을 조회합니다. | REST API |
해당 기능설명 가이드를 보면 모든 api가 정해진 규칙의 아키텍쳐로 이루어진 rest api를 사용한다는 것을 알 수 있다.
위에서 확인해 볼 수 있듯이 카카오톡 캘린더에서는 사용자 캘린더, 캘린더 메세지, 공개/구독/게스트 일정 등 다양한 기능을 제공하고 있으며 오늘은 그 중 가장 많이 쓰이는 사용자 캘린더 기능이 어떤 api와 과정을 통해 구현되는지 알아보도록 하자.
▶ Rest API 사용 과정
대표적인 톡캘린더 API의 사용 시나리오에 대한 API 호출 순서와, 요청 또는 확인 필요 항목
캘린더의 목록을 조회하고 관리할 수 있는 사용자 캘린더는 크게 1)목록 가져오기 2)생성하기: 서브캘린더 3)수정하기: 서브캘린더 4)삭제하기:서브캘린더의 과정으로 api를 사용한다.
모든 과정에서 공통된 작동 원리로는 먼저 액세스 토큰을 헤더에 담아 파라미터와 함께 GET으로 요청한다. 이때 filter 파라미터로 특정 타입의 캘린더 목록만 가져올 수도 있다. 요청 성공 시 응답은 캘린더 타입별 목록을 포함한 JSON 객체로, 요청 실패 시 에러코드로 사유를 확인합니다.
예시로 사용자 캘린더에서 목록을 불러오는 과정을 들겠다.
1) 기본 정보
맨 처음 GET 을 통해 캘린더를 불러오라는 요청을 하는 것임을 알 수 있다. 또한 해당 요청을 구현하기 위해서는 카카오 로그인이 필요하므로 access token이 담겨져 있는 것을 볼 수 있다.
2) Request
filter 파라미터로 특정 타입의 캘린더 목록만 가져올 수도 있는데, 이때 불러오고자하는 캘린터 타입에 따라 user, subscribe,all로 나누어 요청할 수 있다. 해당 요청은 따로 require이 필요하지 않다.
3) Response
위의 요청들이 성공했을시 응답은 캘린더 타입별 목록을 포함한 JSON 객체이다.
만약 요청이 승인되지 않았다면 카카오톡 캘린더에서는 에러코드를 통해 해당 사유를 확인할 수 있다.
개발..코딩........검은건 글씨고 하얀건 바탕......너무 어렵지만 그래도 어쩌겠어 해내야지! 화이..팅......!
'코드스테이츠 PMB > Daily' 카테고리의 다른 글
[코드스테이츠 PMB 17기 W8D3] 스타벅스 PM이 되어 이해관계자와 소통하기 (0) | 2023.03.30 |
---|---|
[코드스테이츠 PMB 17기 W8D2] 애자일 방법론-스크럼 프레임워크 (0) | 2023.03.29 |
[코드스테이츠 PMB 17기 W7D2] 'Melon'의 서비스 유형 알아보기 (0) | 2023.03.22 |
[코드스테이츠 PMB 17기 W6D3/D4] OECD국가의 '삶의 질' 데이터 분석하기(가설설정, 시각화) (0) | 2023.03.16 |
[코드스테이츠 PMB 17기 W6D1]브랜디의 작동 과정 파악하기(Feat. Flow Chart) (0) | 2023.03.14 |