requests モジュールを使用して ArangoDB と Python を使用し、Arango の HTTP API を使用します。自動化されたテスト プロセスの一環として実行したい HTTP API を介して Foxx アプリをプログラムで展開する際に、認証の問題が発生しています。アプリをアップロードする唯一のプログラム例は、古いルートを使用しているようです。zipをアップロードできます:
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
{"error": "unauthorized"} が返ってきます。何が問題なのかがわかりますが、_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
)
{"error": "unauthorized"} が返ってきます。
UI を使用してアプリをインストールするか、単にファイルを正しい場所にコピーしてデータベースをバウンスすると、アプリは正常に動作します。
ここで行っていない方法でツチブタルートを使用するには、資格情報を個別に送信する必要がありますか? 手順がありませんか?