使用notion-client调用Notion API时遇Invalid request URL错误求助
解决Notion API添加文本块的URL错误问题
错误原因
你碰到的APIResponseError: Invalid request URL是因为调用notion.blocks.children.append的方式不对——notion-client库的方法要求用关键字参数传递参数,而非把所有参数塞进一个字典里。另外代码里还有语法错误:字典里的object和type没加引号,会被Python当成未定义变量。
修正后的代码
from pprint import pprint from notion_client import Client token = "00000000000000000000000" # 已脱敏 notion = Client(auth=token) page_id = "000000000000000000" # 待办列表页面ID,已脱敏 # 可选:获取页面现有内容 blocos_pagina = notion.blocks.children.list(block_id=page_id) pprint(blocos_pagina) # 添加带链接的文本块到页面 texto = notion.blocks.children.append( block_id=page_id, children=[ { "object": "block", "type": "paragraph", "paragraph": { "text": [ { "type": "text", "text": { "content": "– Notion API Team", "link": { "type": "url", "url": "https://twitter.com/NotionAPI" } } } ] } } ] ) pprint(texto)
关键修改点
- 将
notion.blocks.children.append({...})改为notion.blocks.children.append(block_id=page_id, children=...),用关键字参数传递参数,这是notion-client库的标准调用方式 - 给字典里的
object和type加上双引号,避免语法错误 - 可选:调用
notion.blocks.children.list时也改用关键字参数传递block_id,保持代码一致性
如果要添加待办事项(而非普通段落),可以把type改成to_do,并添加checked字段,示例如下:
texto = notion.blocks.children.append( block_id=page_id, children=[ { "object": "block", "type": "to_do", "to_do": { "text": [ { "type": "text", "text": { "content": "借助Notion API添加此文本块", } } ], "checked": False } } ] )
内容的提问来源于stack exchange,提问作者appwiz.cpl
相关产品推荐
相关产品推荐

