flutter with notion api (ft.chatgpt) - 후기

flutter개발 notion api 이용하자.

flutter with notion api (ft.chatgpt) - 후기
Photo by Artur Shamsutdinov / Unsplash
  • 안내말 입니다.
  • 개인적으로 남기는 글입니다. 아래의 경우를 미리 공지합니다.
  • 높임말은 없는 경우가 있습니다.
  • 영어, 일본어, 베트남어를 공부하고 있습니다. 경우에 따라서 사용됩니다.
  • 보기 거북하다면 뒤로가기 해주세요.

이야기 시작-

후기 입니다. 코드 등은 기록으로 남기지 않았습니다. 어떻게 하면 되는지 흐름 정도로 기억을 남기고자 하는 글입니다.


최근에 notion 을 조금더 쉽게 사용하면 어떨까 라는 생각에 api 를 이용하면?? 으로 생각을 하였다. 그래서 chatgpt를 이용해서 조금 더 쉽게 접근 해보려고 했다. 결론은 chatgpt 의외로 괜찮은 조언자? 인것같다.

Notion API 이해가 필요

notion은 한동안 많은 사람들이 애용? 하는 어플이 되었다. 현재 무료로 풀리기도 하였고 AI 기능을 추가 하면 월 10$ 인가? 사용도 가능하다. second brain 이라고 정말 수많은 사람들이 추천도하고 기능도 팔고 있다.

API를 이용하면 데이터베이스(테이블)에 저장된 내용을 가져오거나 업데이트를 할 수 있다. 물론 삭제도 가능, 대표적으로 TODO 를 생각하면 된다. API를 이용하기 위해서는 보안키를 발급받아야한다.

  1. 개발자 사이트에 접속
    https://developers.notion.com/
    View my integrations 으로 접속하여 진행한다.
  2. 페이지를 1개 만들고 적당한 이름으로 지정한 뒤
    데이터베이스를 만들고 속성등은 자신이 사용하기 위한 것으로 수정을 한다.
    개인적 의견으로는
    - title 은 전부 영문으로 한다.
    - 첫 열에 Name 부분은 건들이지 않는다. (실제 노션으로 접속해서 빈칸이 되어서 보기? 에 안는 안좋지만,API에서 첫 열Name을 변경하면 다른 형식? 으로 되어서 json 을 파악해야하는 경우가 발생한다.
  3. 데이터베이스 ID를 가져온다.
    데이터베이스에서 "보기링크복사" 한뒤에 에디터에서 잠시 붙여넣기 하고
    https://www.notion.so/아이디/~~~~~?~
    아이디 뒤 / 부터 물음표 앞 까지가 데이터베이스 ID가 된다.
  4. 노션 API에 주의점은 각 요청에 대해 3초 딜레이가 있다는 것이다. flutter에서 delay 를 줘야한다.

flutter

팩키지를 추가 해줍니다. http 입니다. (dotenv를 활용해서 키를 숨길수도 있습니다)

노션이랑 연결하는 코드를 작성합니다.

import 'dart:convert';
import 'package:http/http.dart' as http;

class NotionService {
  final String apiKey = 'YOUR_NOTION_API_KEY';
  final String databaseId = 'YOUR_DATABASE_ID';

  Future<void> fetchNotionItems() async {
    final url = Uri.parse('https://api.notion.com/v1/databases/$databaseId/query');
    final response = await http.post(
      url,
      headers: {
        'Authorization': 'Bearer $apiKey',
        'Content-Type': 'application/json',
        'Notion-Version': '2022-06-28',
      },
    );

    if (response.statusCode == 200) {
      final data = jsonDecode(response.body);
      print(data);
    } else {
      print('Failed to load items: ${response.statusCode}');
    }
  }
}

노션쪽에서 말한 딜레이 3초에 대해서 꼭 작성을 해서 에러가 발생되지 않도록 만드는 것이 관건이다. 다 만들고 나면, icon 변경이라든지 app name change 라든지 한 일이 아직 많이 남았다.

갈길이 멀다 멀어.

배포

배포는 여러 방법이 존재한다.

  1. 각각 스토어에 개발자 등록하고 배포
  2. 안드로이드는 apk 배포
  3. ios 는 firebase app Distribution 을 이용해서 배포

끝.