Python调用eLabFTW API返回404错误,请求协助解决
解决eLabFTW API调用返回404错误的问题
你在调用eLabFTW的API创建实验时收到404响应,以下是排查和修复方案:
原代码
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)
核心错误分析
- URL拼接异常:代码中使用
format(host=host)但未定义host变量,多余的格式化操作可能导致URL解析错误;同时需确认eLabFTW服务确实运行在localhost:8890,地址或端口错误会直接返回404。 - 权限头格式错误:eLabFTW API要求
Authorization头格式为ApiKey YOUR_API_KEY,直接传入密钥不符合接口规范。 - 请求数据未正确序列化:POST创建实验时需以JSON格式传递数据,原代码未指定序列化方式,服务器无法解析请求体。
修正后的代码
import requests requests.packages.urllib3.disable_warnings() # 配置项 API_URL = "http://localhost:8890/api/v2/experiments" API_KEY = 'a2cmykeyc19be8' # 符合要求的权限头 headers = {'Authorization': f'ApiKey {API_KEY}'} # 实验数据 experiment_data = { 'title': 'test versuch', 'body': 'test' } # 使用json参数自动完成数据序列化与Content-Type设置 response = requests.post(API_URL, headers=headers, json=experiment_data, verify=False) # 打印详细响应信息 print(f"状态码: {response.status_code}") print("响应内容:") print(response.json())
额外检查项
- 确认eLabFTW服务正常运行,可通过浏览器或curl测试
/api/v2/experiments端点是否可访问。 - 检查API_KEY是否拥有创建实验的权限,权限不足可能返回403,但也需纳入排查范围。
- 若eLabFTW启用HTTPS,需使用
https://开头的URL,测试环境自签名证书再保留verify=False。
内容的提问来源于stack exchange,提问作者Ute
相关产品推荐
相关产品推荐

