我们使用 ArangoDB 和 Python 使用 requests 模块来使用 Arango 的 HTTP API。我在通过 HTTP API 以编程方式部署 Foxx 应用程序时遇到授权问题,我们希望将其作为自动化测试过程的一部分。我能找到的上传应用程序的唯一程序示例似乎使用过时的路线。我可以上传压缩包:
http://mydev:8529/_db/mydb/_api/upload
我回来了:
{"filename": "uploads/tmp-13-718410"}
...文件在那里。但是然后尝试使用发布数据 {"zipFile": "uploads/tmp-13-718410"}:
http://mydev:8529/_db/mydb/_admin/aardvark/foxxes/zip?mount=%2Fmy-mount-point
我回来了{“错误”:“未经授权”}。我意识到它告诉我出了什么问题,但是我对 _system db 和 mydb 都使用了基本身份验证(两者的用户名/密码相同)。我可以通过 HTTP API 创建/删除数据库没问题,但我似乎无法使用 aardvark 模块。
我正在使用 2.6.8。
我在python中的代码是:
import requests
self._requests = requests.Session()
self._requests.auth = ('user', 'password')
# create the database
r = self._requests.post('http://mydev:8529/_api/database', json={'name': 'mydb', 'users': [{'username': 'user' 'passwd': 'password'}]})
...所有通过 HTTP API 进行的搜索、插入等都可以正常工作。
然后在以后通过 HTTP API 安装 Foxx 应用程序时:
r = self._requests.post('http://mydev:8529/_db/mydb/_api/upload', data=data) # succeeds
filename = r.json()['filename']
data = {'zipFile': filename}
r = self._requests.put(
r'http://mydev:8529/_db/mydb/_admin/aardvark/foxxes/zip?mount=%2Fmy-mount-point',
json=data
)
我回来了{“错误”:“未经授权”}。
当我使用 UI 安装应用程序或简单地将文件复制到正确的位置并弹回数据库时,该应用程序运行良好。
我是否需要单独发送凭据才能以我不在这里使用的方式使用土豚路线?我错过了一步吗?