以下 curl 命令从命令行工作。我得到了服务器的有效响应。
curl -X POST https://somebaseurl/api/v1/auth/login -H "Content-Type:application/json" -d '{"email": "foo@bar,com", "password": "foo"}'
Run Code Online (Sandbox Code Playgroud)
但是我正在尝试编写这样的 BASH 脚本
baseUrl=https://somebaseurl
contentTypeJson="\"Content-Type:application/json\""
credentials="'{\"email\": \"foo@bar.com",\"password\": \"foo\"}'"
login="curl -X POST $baseUrl/api/v1/auth/login -H $contentTypeJson -d $credentials"
echo ${login}
response=`${login}`
echo ${response}
Run Code Online (Sandbox Code Playgroud)
我从服务器收到错误的请求响应。但是,如果我将回显的 curl 命令直接复制到我的终端中,它就可以工作。我究竟做错了什么?
编辑:
根据要求,我收到错误请求请求 'POST api/v1/auth/login' [预期应用程序/json]
Bash并且cURL可以非常特别地如何在脚本中使用引号。如果逃避被抛弃,那么其他一切都很容易失败。通过 shellcheck.net 运行脚本通常对识别此类问题非常有帮助。以下是根据建议修复后的脚本修订版:
#!/bin/bash
baseUrl="https://somebaseurl/api/v1/auth/login"
contentTypeJson="Content-Type:application/json"
credentials="{\"email\": \"foo@bar.com\", \"password\": \"foo\"}"
login="$(curl -X POST "$baseUrl" -H "$contentTypeJson" -d "$credentials")"
echo "${login}"
response="${login}"
echo "${response}"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6893 次 |
| 最近记录: |