调用Monday.com API创建指定工作区看板返回200但未成功问题排查
问题分析与解决
首先,返回200不代表看板创建成功。Monday.com的GraphQL API即使请求存在语法错误或业务逻辑错误,HTTP状态码仍可能返回200,实际错误信息会包含在响应体的errors字段中。你遇到的问题和看板是否添加数据无关,核心是你的GraphQL查询存在语法错误。
代码中的问题
你的GraphQL mutation里,字符串类型的参数(board_kind、board_name、description、workspace_id)没有用双引号包裹,这会导致GraphQL解析失败。比如board_kind: {board_kind}会被解析为board_kind: private,而private是未定义的变量,不是字符串字面量,直接触发语法错误。
修复后的代码
import requests import json import timeit # 原代码遗漏了该模块的导入 start = timeit.default_timer() apiKey = 'xxx' apiUrl = "https://api.monday.com/v2" headers = {"Authorization" : apiKey, "Content-Type" : 'application/json', "API-Version" : '2023-10'} board_kind = 'private' board_name = 'Baulder Gate 3' description = 'My Campaign' workspace_id = 'xxx' # 为字符串参数添加双引号,符合GraphQL语法要求 payload = f""" mutation {{ create_board ( board_kind: "{board_kind}", board_name: "{board_name}", description: "{description}", workspace_id: "{workspace_id}") {{ id }} }} """ data = {'query' : payload} r_boards = requests.post(url=apiUrl, headers=headers, data=json.dumps(data)) # 打印响应体,直接查看GraphQL的执行结果或错误信息 print(r_boards.json()) if r_boards.status_code == 200 and 'errors' not in r_boards.json(): print("board was created")
额外建议
- 发送请求后务必打印响应的JSON内容,不要只依赖HTTP状态码判断结果,这样能直接定位GraphQL层面的错误。
- 确认你的API密钥拥有对应工作区的看板创建权限,权限不足也会导致创建失败但返回200,错误信息会明确提示权限问题。
内容的提问来源于stack exchange,提问作者Binx
相关产品推荐
相关产品推荐

