文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何使用Notion API来构建CMS

2024-12-02 16:57

关注

【51CTO.com快译】作为一个开源的框架,Appsmith能够让开发人员只需使用必要的代码,即可构建出仪表板、工作流、以及CRUD等应用。同时,您也可以通过连接到任何API、或诸如:MongoDB、PostgreSQL或MySQL等数据库上,以访问包括图表、表格、表单在内的多个组件,并迅速构建出各种UI。其中,最常见的一种应用便是在Appsmith上,使用Notion来管理我们的内容日历(content calendar),以实现与外部团队的协作。当然,要在Notion上创建细粒度的访问控制,并开发出能够平稳运行的工作流,往往需要Notion通过发布其API,来构建相应的应用程序,以实现在同一处管理整体内容,并能向协作者提供必要的访问权限。

下面,我将向您展示如何构建一个内容管理系统(CMS)。其应用会使用Notion(模拟)表作为数据源,用户可以在应用上输入、提交和编辑文字内容。同时,它通过使用SendGrid,提供与选定电子邮件服务的集成配置,向项目组成员发送邮件提醒或更新。在功能层面上,我们将重点关注如下方面:

首先,让我们来看看该应用的外观截图。你也可以通过链接--https://app.appsmith.com/applications/609e60fd5864501cc39c4836/pages/609e60fd5864501cc39c4838,查看其真实界面。

 

Appsmith Notion API应用截图

配置Notion API

由于Notion API可以让我们连接到Notion的页面和数据库上,因此我们首先讨论如何通过设置API,收集所有必需的key,以连接到Appsmith上。

所有集成选项

创建新的集成

在Notion中,我们需要在工作区中为添加一个集成密钥,以执行诸如:创建、读取、更新等各种操作,以及连接第三方应用。

设置Notion页面

在使用Notion API之前,我们需要为内容日历创建一个数据库。

  1. Java 
  2. Title: Text Field 
  3. Description: Text Field 
  4. Author: Text Field 
  5. Category: Text Field 
  6. Status: Dropdown Field 
  7. Notes: Text Field 
  8. Deadline: Date Field 
  9. Author Email: EMail Field​ 

为了直接使用上述Notion页面作为模拟数据库,您可以单击此链接,并复制到自己的一个工作区中。当然,请确保已将集成添加到了该页面上,以使用Notion API在Appsmith上构建应用。

从Notion API处查询数据

请按照如下步骤,通过Notion API查询数据:

  1. HTTP 
  2. https://api.notion.com/v1/databases//query 

  1. https://www.notion.so/myworkspace/a8aec43384f447ed84390e8e42c2e089?v=... 
  2.                                   |--------- Database ID --------| 
  1. Authorizationkey from integration> 
  2. Notion-Version: 2021-05-13 
  3. Content-type: application/json 

下面是配置界面的截图:

Appsmith的Notion API配置截图

将Notion API绑定到Appsmith

下面,我们需要将源自Notion Table的数据的API响应绑定到列表小部件(List Widget)上,以显示所有详细的信息。具体步骤如下:

  1. {{ 
  2. query_data_from_database.data.results.map( 
  3.     (item) => { 
  4.         return (item.properties) 
  5.     }) 
  6. }} 

在此,我们使用query_data_from_database,并将它映射到条目(item)的返回属性上,其响应如下图所示:

从数据库查询数据响应的截图

然后,我们在列表小部件上添加各种小部件,以显示来自Notion API的详细信息。在此,我们拖放了六个文本小部件,并将其Text属性设置为如下内容:

  1. - Title 
  2. - Description 
  3. - Status 
  4. - Author 
  5. - Email 
  6. - Deadline 

我们在它们的旁边再添加六个文本小部件,并从Notion API处绑定它们对应的值。而它们的Text属性将被设置为如下内容:

  1. {{ currentItem.Title.title[0].text.content }} 

此处的currentItem对应于列表小部件中的唯一项。接着,我们将从Items列表中访问Title属性,并去解析JSON。下图展示了其响应的画面:

相应的截图

至此,我们可以通过列表小部件的Notion API条目,查看到Titles了。同样地,我们也可以​​设置其他文本小部件的Text属性,以显示来自API的内容。例如:

  1. {{currentItem.Description.rich_text[0].text.content}} 
  1. {{currentItem.Status.select.name}} 
  1. {{currentItem.Author.rich_text[0].text.content}} 
  1. {{currentItem["Author Email"].email || "Not Added"}} 
  1. {{currentItem.Deadline.date.start}}  
  1. {{currentItem.Category.rich_text.map(row => {return row.plain_text})[0]}} 

注意,解析项目的代码会根据Notion API的API响应而发生变化。

我们在最后添加了一个按钮小部件,以便管理员直接从Appsmith处,向作者发送电子邮件。下面是我们将Notion Table中的所有数据,解析到Appsmith列表小部件后。

将Notion Table中的所有数据解析到Appsmith List小部件后的App截图

为了向query_data_from_database查询添加刷新按钮,我们将Button小部件拖放到界面上,将Label属性设置为Refresh。接下来,我们打开onClick属性,单击调用API选项,然后选择query_data_from_database API。至此,每当我们单击刷新按钮时,就能看到Notion页面上更新的所有新的数据了。

将条目添加到Notion数据库

为了能够让内容日历罗列出概念表里的所有详细信息,我们可以通过如下操作步骤,在Appsmith上向数据表添加新的条目:

表单界面如下图所示:

提交内容创意表单的截图

以下是我们创建的、可供参考的字段。我们将这些小部件命名做如下命名,以便后续在POST API方法中将其用作参考:

  1. Title - titleInput 
  2. Description - descriptionInput 
  3. Author Name - authorInput 
  4. Email - emailInput 
  5. Category - categoryInput 
  6. Submission Date - dateInput 

让我们创建一个新的API,以便在从Appsmith处提交表单时,能够向Notion页面添加新的值。具体操作步骤如下:

  1. Authorizationkey from integration> 
  2. Notion-Version: 2021-05-13 
  3. Content-type: application/json 
  1. "parent": { "database_id""" }, 
  2.  "properties": { 
  3.            "Author": { 
  4.           "type""rich_text"
  5.           "rich_text": [ 
  6.             { 
  7.               "type""text"
  8.               "text": { 
  9.                 "content""{{authorInput.text}}"
  10.                 "link"null 
  11.               } 
  12.             } 
  13.           ] 
  14.         }, 
  15.         "Author Email": { 
  16.           "type""email"
  17.           "email""{{emailInput.text}}" 
  18.         }, 
  19.         "Category": { 
  20.           "type""rich_text"
  21.           "rich_text": [ 
  22.             { 
  23.               "type""text"
  24.               "text": { 
  25.                 "content""{{categoryInput.text}}"
  26.                 "link"null 
  27.               } 
  28.             } 
  29.           ] 
  30.         }, 
  31.         "Status": { 
  32.           "type""select"
  33.           "select": { 
  34.             "name""Not Started"
  35.     "color""blue" 
  36.           } 
  37.         }, 
  38.         "Description": { 
  39.           "type""rich_text"
  40.           "rich_text": [ 
  41.             { 
  42.               "type""text"
  43.               "text": { 
  44.                 "content""{{descriptionInput.text}}"
  45.                 "link"null 
  46.               } 
  47.             } 
  48.           ] 
  49.         }, 
  50.         "Deadline": { 
  51.           "type""date"
  52.           "date": { 
  53.             "start""{{dateInput.selectedDate}}"
  54.             "end"null 
  55.           } 
  56.         }, 
  57.         "Title": { 
  58.           "type""title"
  59.           "title": [ 
  60.             { 
  61.               "type""text"
  62.               "text": { 
  63.                 "content""{{titleInput.text}}"
  64.                 "link"null 
  65.               } 
  66.             } 
  67.           ] 
  68.         } 
  69.       } 
  70.   } 

我们还必须在处添加数据库id。只有在添加了mustache操作后,我们才能从Appsmith的各个input表单中获取输入,并可以观察到每个属性的内容字段中的body。

接着,我们打开提交按钮的属性窗体,将onClick属性更新为Call an API,然后选择add_an_item_to_database API。至此,我们便可以使用Appsmith表单,向Notion表添加新的数据了。

发送电子邮件集成

为了方便Appsmith与作者交流,我们使用Sendgrid来添加一个电子邮件集成。

创建用于发送电子邮件的模式

  1. Sending To: Input Widget 
  2. Email subject: Input Widget 
  3. Email content: Rich Text Editor Widget 
  1. Sending To: emailInput 
  2. Email subject: subjectInput 
  3. Email content: contentInput 

模式界面截图

配置 SendGrid API

  1. https://api.sendgrid.com/v3/mail/send 
  2. Authorization : Bearer  
  3. Content-Type : application/json 
  1. {"personalizations": [{"to": [{"email""{{emailInput.text}}"}]}],"from": {"email""test@example.com"},"subject""{{subjectInput.text}}","content": [{"type""text/plain""value""{{contentInput.text}}"}]} 

在此,我们将动态地传递来自模式小部件的to-email、from-email、主题和内容字段。而在我们将表单的onClick属性设置为Call an API,并选择send_email查询后,便可以成功地从Appsmith处发送电子邮件了。

小结

通过上述步骤,我们向您展示了如何轻松地在Appsmith上构建诸如以Notion后端的CMS应用,并将其连接到Notion API上,以及如何创建和读取数据。同时,您也可以了解到如何构建交互式页面,自定义小部件。您可以通过链接--https://app.appsmith.com/applications/609e60fd5864501cc39c4836/pages/609e60fd5864501cc39c4838?utm_source=blog&utm_medium=direct&utm_content=notion-api-crm&utm_campaign=weeklyblog&utm_term=notion-api-crm,获悉整个应用的程序代码,以及相关的演示数据。

原文Using the Notion API to Build a Content Management System,作者: Vihar Kurama

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

 

来源:51CTO内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯