Uknow's Lab.
article thumbnail

 

 

 

 

노션(Notion). 에버노트의 기기 수 제한 때문에 다른 노트 앱을 찾던 중 알게된 앱이였습니다.

 

처음엔 수업 내용을 필기 및 정리하는 용도로만 사용하였으나,

노션의 사용분야는 그야말로 대단했는데요.

 

현재는 필기 및 정리는 물론, 포트폴리오 작성, 프로젝트 관리(회사 및 학교 등등), 일정 관리, 맛집 리스트까지

여러 방면으로 활용하고 있지요.😀

 

그러던 중, 연구실 앱을 만들어 보자는 이야기가 나와 애플리케이션 개발에 착수하였는데,

연구실 일정 관리를 노션으로 하고 있어서,

노션의 일정을 가져올 수 있을까...? 하는 생각에 노션 API를 찾아봤는데, 역시나 있었습니다.

 

 

 

노션 API 기본 세팅하기

https://developers.notion.com/

 

Notion API

 

developers.notion.com

 

위 사이트에 먼저 접속해주세요.

 

 

새 API 통합 만들기를 클릭합니다.

 

 

 

 

 

 

 

이름과 연결할 워크스페이스를 입력합니다.

저는 이름을 notionApiTest로 짓겠습니다.

 

 

 

노션 API 토큰이 생성되었습니다! 👻

 

 

이번 노션 API에 쓸 테스트용 페이지 하나를 생성하였습니다.

상단에 공유 버튼을 눌러주세요.

 

 

이런 창이 나타날텐데, 초대 버튼을 클릭합니다.

 

 

초대 목록에 방금 추가한 notionApiTest가 보이는군요.

해당 사용자를 추가해줍시다.

 

 

포스트맨(PostMan)을 활용하여 Notion API 써보기

 

이제 기본 세팅도 끝났겠다, 포스트맨을 활용하여 API를 테스트 해보겠습니다.

 

 

 

 

노션 포스트맨(Postman) 워크스페이스 포크 따기

포스트맨은 API를 테스트 할 수 있는 프로그램 입니다.

직접 써보니 굉장히 편리해서 꽤 애용하고 있습니다.

 

하지만, 여기서 포스트맨에 대한 설치방법과 사용법을 쓰기엔 글이 너무 길어지니,

부득이하게 해당 글에서는 포스트맨을 이용한 노션 API 테스트만 알아보도록 하겠습니다 😱

 

 

 

 

https://www.postman.com/notionhq

 

Notion | Postman API Network

Discover the latest APIs, Collections and Workspaces by Notion Including Notion API, Notion's API Workspace and more on Postman Public API Network

www.postman.com

 

고맙게도, 노션 API팀에서는 포스트맨의 기본 입력 폼을 제공하고 있습니다.

 

 

 

 

 

자 그럼, 포스트맨을 켜봅시다.

 

포스트맨 상단 검색탭에 notion을 검색합니다.

 

 

 

 

 

 

Notion's API Workspace의 Notion API를 클릭해주세요

 

 

 

 

Fork 버튼을 눌러 해당 워크스페이스를 포크합니다

 

폼을 작성하고 해당 콜렉션을 Fork 합니다.

 

 

 

 

 

제 워크스페이스로 돌아와보니, 포크가 잘 되어 있네요 😄

 

 

 

 

포스트맨에 토큰 저장하기

 

이제 포스트맨에 토큰값을 넣어볼께요

 

 

 

 

아까 위에서 발급한 프라이빗 API 통합 토큰을 CURRENT VALUE에 넣어주면 됩니다.

INITIAL VALUE는 비워놔도 무방해요.

 

 

토큰을 넣고 컨트롤 + S 를 눌러 저장하는 것! 절대 잊지 마세요!!!

꼭 꼭 꼭!!!! 하셔야 됩니다!!! 저는 저장 안하고 왜 안되지??? 하고 1시간을 낭비했어요...ㅠㅠ

 

 

 

포스트맨으로 API 테스트하기

먼저, 노션 페이지에 데이터베이스 하나를 만들었어요

과일들이 맛있어 보이네요.

 

 

 

 

 

해당 데이터베이스의 보기 링크를 복사합니다

 

해당 데이터베이스의 보기 링크는

https://www.notion.so/d61a56089ae64b02a575432003e21252?v=e63756410330424393ddbca1ecd05b13 인데요.

www.notion.so 부터 ?v= 전 까지가 해당 데이터베이스의 아이디 입니다.  

 

위 데이터베이스 같은 경우는 d61a56089ae64b02a575432003e21252 가 ID값이네요.

 

 

 

 

 

 

포스트맨의 Create a Page로 들어가 데이터베이스에 새 페이지를 생성해보겠습니다.

 

 

 

 "parent": {
        "database_id""{{DATABASE_ID}}"
    },

database_id에 위에서 얻은 데이터베이스 ID를 넣어주세요

 

 

 

 

 

 

{
    "parent": {
        "database_id": "d61a56089ae64b02a575432003e21252"
    },
    "properties": {
        "색상": {
            "select": {
                "name": "빨강"
            }
        },
        "이름": {
            "title": [
                {
                    "text": {
                        "content": "오렌지"
                    }
                }
            ]
        },
        "맛": {
            "type": "rich_text",
            "rich_text": [
                {
                    "text": {
                        "content": "아삭아삭 맛있어요"
                    }
                }
            ]
        }
    }
}

 

이후, 작성할 내용을 입력해주시고 send 버튼을 눌러주세요

 

 

 

 

 

정상적으로 잘 들어갔네요! 😀

 

이번엔, 해당 데이터베이스의 목록들을 쫙 받아와 볼까요?

 

 

 

 

 

 

Quety a Database로 들어가주세요.

 

 

 

 

주소의 :id 부분에 해당 데이터베이스 id를 넣어주세요

body는 특정 데이터베이스만 가져올 때는 쿼리문을 작성해 주시고, 모든 값을 가져오고 싶을 땐 비워놓으셔도 되요.

 

 

 

 

 

 

해당 데이터베이스의 정보를 잘 가져왔네요!

 

 

 

노션 API 에 관한 더 자세한 설명을 보실 분들은 아래 노션 API 공식 문서를 참고해주세요!

 

https://developers.notion.com/docs/getting-started

 

Getting started

Learn how to make your first API requests using the Notion API

developers.notion.com

 

https://developers.notion.com/reference/intro

 

Introduction

Connect Notion pages and databases to the tools you use every day, creating powerful workflows.

developers.notion.com

 

 

 

 

후기

솔직히 말해서, Response의 어마어마한 길이와 수많은 괄호를 보고 그만 기절할뻔 했었어요.

안드로이드 스튜디오에서 JSON을 DTO로 변환해주는 플러그인이 없었다면,

노션말고 구글 캘린더로 일정관리 하자 라고 할뻔... 😇

 

태그도 공식 문서의 Json 예시와 비교해보며

음... 선택이니까 타입을 select로... 텍스트니까 text... 인데 그 안에 title... rich_text...? 너는 누구야 또?! 🤬

하면서 당황했던 기억이 나네요.

 

해당 데이터베이스의 속성 정보를 요청해 비교하며

음... rich_text 안에 text...를 넣고... 그 안에 content...?를 넣으면 되나? 하면서 개발했었습니다.

profile

Uknow's Lab.

@유노 Uknow

인생은 Byte와 Double 사이 Char다. 아무말이나 해봤습니다.