使用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
相关产品推荐
相关产品推荐

