也许有人知道实验本 elabftw。 我正在尝试通过 python 发出一个简单的请求。
我试过这个:
import os
import requests
import json
requests.packages.urllib3.disable_warnings()
#########################
# CONFIG #
#########################
url = "http://localhost:8890/api/v2/experiments".format(host=host)
API_KEY = 'a2cmykeyc19be8'
headers = {'Authorization' : API_KEY}
data = {'title': 'test versuch','body':'test'}
response = requests.post(url,headers=headers, verify=False)
print(response)
并得到:
我希望这个结果:
{'_date': '2023-08-30', '身体':'测试', 'body_html': '测试', 'canread': '{"base": 30, "teams": [], "users": [], "teamgroups": []}', 'canwrite': '{"base": 30, "teams": [], "users": [], "teamgroups": []}', '类别': '运行', “类别 ID”:61, “颜色”:“29AEB9”, '评论': [], '内容类型':1, '创建时间': '2023-09-19 15:58:26', '详细': '20a10988eb20af0ee', 'events_id':无, 'events_item_id':无, '名': '', '全名': '', “有附件”:无, ‘有评论’:0, “编号”:407, 'is_bound':无, “最后更改者”:29, '姓': '', “链接”:无, “锁定”:0, 'lockedby':无, '锁定时间':无, “元数据”:无, '修改时间': '2023-09-21 12:46:18', “下一步”:无, “兰花”:没有, '页面': '实验', “评分”:0, “最近的评论”:无, 'sharelink': 'https://elabftw.ptb.de/experiments.php?mode=view&id=407', “状态”:1, '脚步': [], '标签': 'TLV|FM1|7.5-1V-23-37', 'tags_id': '95,97,163', “时间戳”:0, 'timestamped_at':无, “时间戳”:无, 'title': '测试 versuch', '类型':'实验', 'up_item_id':无, '上传': [], “用户 ID”:29}
我在这里关注官方文档:https://doc.elabftw.net/api/v2/#/Experiments/read-experiments
GET
,而不是POST
q=
参数查询实验import requests
requests.packages.urllib3.disable_warnings()
#########################
# CONFIG #
#########################
url = "http://localhost:8890/api/v2/experiments".format(host=host)
API_KEY = "a2cmykeyc19be8"
headers = {"Authorization": API_KEY}
params = {"q": "test versuch"}
# 1. remove verify=False, you're connecting to http://, not https://
# 2. to get result you wanted, use .get(), not .post()
# 3 according to the documentation, use q= parameter
response = requests.get(url, headers=headers, params=params)
print(response)
您的请求并未发送任何数据。如果 API 希望您发送数据(例如实验的标题和正文),您应该将其包含在您的请求中。具体方法如下:
response = requests.post(url, headers=headers, json=data, verify=False)
在此代码中,json=data 将数据字典作为 JSON 正文与请求一起发送。也许这会解决问题