python - REST API:如何在 python 循环中从(JSON)文件中发布多个条目?
问题描述
我是 python 和 REST 世界的新手。
我的 Python 脚本
import json
import requests
with open(r"create-multiple-Users.json", "r") as payload:
data = json.load(payload)
json_data = json.dumps(data, indent=2)
headers = {'content-type': 'application/json; charset=utf-8'}
for i in range(len(data)):
r = requests.post('http://localhost:3000/users',
data=json_data, headers=headers)
模拟 API 服务器:https ://github.com/typicode/json-server 。
入口文件: “info.json”,端点: /users,最初只有一个用户。
{
"users": [
{
"id": 1,
"name": "John",
"job": "Wong"
}
]
}
问题:
从只有一个用户的文件中发布可以完美地工作。新用户按预期作为对象附加到 info.json。
但是当尝试发布时,假设下面的文件“create-multiple-Users.json”中有 3 个用户,那么用户将作为对象列表附加到“info.json”3 次(即对象/迭代的数量)
[ { "id": 10, "name": "Janet", "job": "Weaver" }, { "id": 12, "name": "Kwonn", "job": "Wingtsel" }, { “id”:13,“name”:“Eve”,“job”:“Holt”}]
我希望将用户一个一个地附加为单独的对象。
也许我过于简化了循环?非常感谢任何帮助。
PS:对不起,我无法格式化多用户文件;(
解决方案
您的 for 迭代中的一个简单更改将有助于:
import json
import requests
with open(r"create-multiple-Users.json", "r") as payload:
data = json.load(payload)
json_data = json.dumps(data, indent=2)
headers = {'content-type': 'application/json; charset=utf-8'}
for row in data: # Change this to iterate the json list
r = requests.post('http://localhost:3000/users',
data=row, headers=headers) # Send row that is a single object
推荐阅读
- leaflet - 为什么保存的 html 文件中缺少传单地图上的 grobs,但在 Rstudio 浏览器中可以正常打印?
- openshift - 为 Openshift 路由配置多个路径
- amazon-web-services - If else 条件云的形成
- python - Python 中的 {} 未按预期计算
- python - 'try.....except' 的问题会引发 ROOT 文件的语法错误
- excel - 如何忽略或处理 Excel 函数中的空白单元格?
- c# - System.Data.SqlClient.SqlException (0x80131904):执行超时已过期,错误号:-2
- android - 使用 Wireshark 嗅探 SSL 数据包
- excel - 将 CheckBox LinkedCell 分配给变量
- javascript - 在 vuex 中创建常量变量?