トークンを取得する1つのカールコマンドの値を別のカールコマンドに転送したいと思います。同じ値を保持してください。このコードはトークン値を取得しますが、他のカールコマンドを使用するとトークンが無効になるようです。
token=$(curl -k -X 'POST' \
'<URL>/api/api-token-auth/' \
-H 'accept: application/json' \
-H 'Authorization: Basic dGVzdGFkbWluOlBhc3N3b3JkJDE=' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'username=testadmin&password=Password%241' | sed -n '/ *"token": *"/ {s///; s/".*//; p;} ') echo $token && curl -k -X 'GET' \
'<URL>/api/assessments/' \
-H 'accept: application/json' \
-H 'Authorization: Token $token'
私はLinuxを使用しています。
ベストアンサー1
私が見ることができる1つの問題は、生成されたトークンにsedによって削除された文字を含めることができることです。したがって、トークンを変更すると、使用できなくなります。
この場合は、以下を使用することをお勧めします。ジャック(システムにインストールする必要があるかもしれません)呼び出しを変更する代わりにjsonを解析しますsed
。
どのサービスを使用しているかわからないため、呼び出しの正確な構文がわかりませんjq
。おおよその推測は次のとおりです。
jq --monochrome-output --raw-output --unbuffered '"\(.token)"'
sed
代わりに、私の例を使用して、jq
それがあなたに近づくようにしてください。
(これは回答資格があるかどうかはわかりませんが、私もここに新しく来たので、まだコメントできません)