我使用以下方式发出cURL
请求
PATCH=$(curl -i -F file=@$FILE -F path="${STORAGE_PATH}" -F name="${NAME}" -F description="${DESC}" "${SERVER}/api/patches")
如果响应通过并且数据是属性格式化的,那么PATCH
将是响应的JSON。
我也想同时获取HTTP响应代码(如200,422),因此我可以验证该过程是否已经完成。
我该怎么做?我只想得到一个数字(如200)。
答案 0 :(得分:3)
我用这篇文章解决了我的问题,并认为我会分享我的结果。我的目标是创建一个脚本,以确保我的accesstoken端点正常运行。因此,我必须进行POST调用并提取响应代码,这是我的最终结果:
status=$(curl -w "%{http_code}\\n" -H "Accept:application/json" -H "Content-Type:application/x-www-form-urlencoded" --data "client_id=blah&client_secret=blah&grant_type=password&user_name=user&password=pass" https://api.company.com/v1/accessToken -s -o /dev/null)
status=$({curlRequest})
将输出存储到bash变量中-w
将从响应中提取状态代码-H
配置我的HTTP标头请求--data
设置我要发布的有效负载数据(此标志还会自动将请求设置为POST -s
将使请求的进度计静音-o
,这将提取响应正文并将其放入文件中。通过将值设置为/dev/null
,输出将被丢弃如果您只需要响应代码,则此处的键值为-w
和-o
。删除-o
标志以保留响应正文。
答案 1 :(得分:1)
您可以使用:
PATCH=$(curl -L -w "%{http_code} %{url_effective}\\n" -X POST -d @filename.txt ${server}/api/patches --header "Content-Type:application/json")
它将为您提供响应代码和正文。