python elabftw requests.post()

问题描述 投票:0回答:2

也许有人知道实验本 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}

python tags
2个回答
0
投票

我在这里关注官方文档: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)

0
投票

您的请求并未发送任何数据。如果 API 希望您发送数据(例如实验的标题和正文),您应该将其包含在您的请求中。具体方法如下:

response = requests.post(url, headers=headers, json=data, verify=False)

在此代码中,json=data 将数据字典作为 JSON 正文与请求一起发送。也许这会解决问题

© www.soinside.com 2019 - 2024. All rights reserved.