1 个不稳定版本

0.1.0 2021年2月28日

#9#notion-api

MIT/Apache

25KB
454

Notion-rs

Notion.so API 的非官方 Rust 实现。该包提供了高质量的、可移植的 API 绑定,作为复杂 notion 集成的基座。

#[async_std::main]
async fn main() {
    // Don't commit your token to git!
    let token = std::env::var("NOTION_TOKEN_V2").unwrap();

    let mut client = notion_rs::builder(token.as_str()).build();

    let blocks = client
        .get_page("https://www.notion.so/157765353f2c4705bd45474e5ba8b46c")
        .await
        .unwrap();

    println!("{:#?}", blocks);
}

该包提供了查询构建器、基于 reqwest 的客户端,以及将更改写回 Notion.so 的能力。通过内置的对比机制,notion-rs 允许您下载块数据,就地修改,并将更改提交回 notion 数据库。

该包可以与或不与 reqwest 客户端一起使用,如果您想使用替代的 HTTP 客户端或不想将两个客户端版本捆绑在一起。对于这些用例,我们提供了一个可以与 surf 和 reqwest 集成的查询构建器。

因此,该包在 WASM 环境中工作,并可以与 WASM 网页框架愉快地运行。请注意,底层方法调用是异步的,所以您需要提供自己的异步运行时或使用自己的同步网页客户端。

Typescript 绑定

除了 Rust 客户端,我们还通过 WASM 绑定提供了一个 Typescript 客户端。如果您需要原生绑定,则该包将无法使用。WASM 二进制文件已被精简以更加轻量,但仍会比真正的 Typescript 原生绑定大。

Typescript

let client = new NotionClient(token_v2);

let page = client.getPage("https://www.notion.so/157765353f2c4705bd45474e5ba8b46c");

for (const block of page.blocks) {
    console.log(block.title);
}

支持

当前支持如下

读取 写入
标题 ☑️
副标题 ☑️
次副标题 ☑️
引用 ☑️
代码 ☑️
待办事项 ☑️
书签 ☑️
项目符号列表 ☑️
图片 ☑️
分隔符 ☑️
目录 ☑️
面包屑 ☑️
页面 ☑️
数字列表 ☑️
文本 ☑️
方程式 ☑️
切换 ☑️
呼出 ☑️
工厂 ☑️
集合 🛠

☑️ = 完全支持 🛠 = 部分支持

依赖关系

~2–14MB
~178K SLoC