You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Sheety和Python向表格添加行时遇400错误及疑问

Sheety API POST请求400错误:根属性单复数差异的原因解释

问题回顾

你尝试用Python+Sheety向表格添加行时,因JSON根属性用了复数"workouts"触发400 Bad Request错误,改成单数"workout"后问题解决,但疑惑为何API端点和表格名都是复数,却要用单数根属性。

核心原因:Sheety的RESTful API设计约定

Sheety的API遵循RESTful风格的通用规范:

  • API端点用复数(比如你的/workouts):代表这是一个资源集合,对应整个工作表的所有行数据。
  • POST请求体用单数根属性("workout"):因为你提交的是单个资源条目——也就是要添加到集合里的一行数据。

简单来说:

  • /workouts 指向的是所有 workout 记录的集合
  • 请求体里的"workout" 表示你要新增的单条记录

这种设计是很多REST API的通用逻辑:复数指代资源集合,单数指代集合中的单个资源,和你的表格名复数命名不冲突,是API层面的规范设计。

修正后的代码

import requests
from datetime import datetime

SHEET_ENDPOINT = "https://api.sheety.co/34f63563bea12bad1332ca8a5bb3cae6/workoutTrackerSheet/workouts"

today = datetime.now()
date_string = today.strftime("%d/%m/%Y")
time_string = today.strftime("%X")

data_for_sheet = {
    # 根属性改为单数"workout"
    "workout": {
        "date": date_string,
        "time": time_string,
        "exercise": "exercise",
        "duration": "duration",
        "calories": "calories"
    }
}

response = requests.post(url=SHEET_ENDPOINT, json=data_for_sheet)
response.raise_for_status()

内容的提问来源于stack exchange,提问作者Investigations131

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 13:01:40