как добавить токен в URL, чтобы перейти к curl - PullRequest
0 голосов
/ 16 мая 2018

В скрипте bash, когда я установил:

myUrl="https://api.site.com/api/v2/export/123456"

и затем запустите:

awsAccess=$(curl -X GET $(echo "${myUrl}") \ --header "Accept: application/json" \ --header "Authorization: Bearer myAuthCode")

Я получаю правильный результат JSON:

{"status":"Complete","total_files":1,"completed_files":1,"file_urls":["<a href="https://s3.amazonaws.com/media.site.com/task/123456/encoded-file-name.csv?AWSAccessKeyId=myAWSAccessKeyId" rel="nofollow noreferrer">https://s3.amazonaws.com/media.site.com/task/123456/encoded-file-name.csv?AWSAccessKeyId=myAWSAccessKeyId</a>"]}

Но когда я получаю токен, подобный этому:

myToken=$(echo "${content}" | jq -r '.token' <<< "${myAccessJSON}")

Какие наборы myToken=123456

И я создаю свою переменную URL следующим образом:

baseUrl="https://api.site.com/api/v2/export/" myUrl=$baseUrl$myToken

А потом я бегу:

awsAccess=$(curl -X GET $(echo "${myUrl}") \ --header "Accept: application/json" \ --header "Authorization: Bearer myAuthCode")

Я получаю следующий JSON-ответ:

{"status":"Pending","total_files":1,"completed_files":0,"file_urls":[]}

Который не содержит URL, который мне нужен для загрузки запрашиваемого файла. Еще более странным является то, что когда я ввожу приведенные выше команды непосредственно в cli, токен добавляется правильно, и я получаю полный ответ с нужным мне URL. Как передать объединенный URL-адрес с токеном в моем запросе cURL через сценарий оболочки?

1 Ответ

0 голосов
/ 21 мая 2018

Итак, теперь я чувствую себя немного глупо. Оказывается, мой синтаксис был в порядке. Мой сценарий подключается к серверу, запрашивает токен и затем подключается к тому же серверу для запроса данных. Я пытался сделать это в одном пакетном скрипте. Оказывается, первый сеанс был все еще открыт, когда я установил второе соединение, чтобы запросить данные, используя токен, полученный при первом соединении. Поэтому вместо записи ответов JSON для переменных сеанса bash я просто выводю ответ из первого сценария в файл и завершаю сценарий, который закрывает соединение. Затем я читаю этот файл вторым пакетным скриптом и открываю новое соединение, и теперь все работает.

...