cURL Post请求:获取响应和状态代码

cURL Post请求:获取响应和状态代码,curl,Curl,我使用以下方法发出cURL请求: PATCH=$(curl -i -F file=@$FILE -F path="${STORAGE_PATH}" -F name="${NAME}" -F description="${DESC}" "${SERVER}/api/patches") 如果响应通过并且数据是属性格式的,那么PATCH将是响应的JSON 我还想同时获得HTTP响应代码(比如200422),这样我就可以验证这个过程是否完成了 我该怎么做?我只想得到一个数字(比如200)。您可以使用:

我使用以下方法发出
cURL
请求:

PATCH=$(curl -i -F file=@$FILE -F path="${STORAGE_PATH}" -F name="${NAME}" -F description="${DESC}" "${SERVER}/api/patches")
如果响应通过并且数据是属性格式的,那么
PATCH
将是响应的JSON

我还想同时获得HTTP响应代码(比如200422),这样我就可以验证这个过程是否完成了

我该怎么做?我只想得到一个数字(比如200)。

您可以使用:

PATCH=$(curl -L -w "%{http_code} %{url_effective}\\n" -X POST -d @filename.txt ${server}/api/patches --header "Content-Type:application/json")

它将为您提供响应代码和正文。

我用这篇文章来解决我的问题,并想与大家分享我的结果。我的目标是创建一个脚本,以确保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
    设置我要发布的有效负载数据(此标志还自动设置要发布的请求)
  • -s
    将使请求的进度表静音
  • -o
    这将提取响应正文并将其放入文件中。通过将值设置为
    /dev/null
    ,将丢弃输出

如果您只需要响应代码,这里的键值是
-w
-o
。请删除
-o
标志以保留响应正文。

也许这会有所帮助,下面是使用netcat而不是curl的示例。这只是给我状态代码,我还想获得实际的服务器响应数据(获取JSON数据和响应代码)您能详细说明如何从补丁变量中提取状态代码吗?
status=$(echo$PATCH | tail-n1)
将状态(最后一行)存储在
$status
中,
BODY=$(echo$PATCH | sed'
将存储主体(除了最后一行以外的所有内容)在
$BODY
中。谢谢,它是有效的,但是当我看到
-a-b-c-b-z-y-c
时,我想你们为什么不使用像
--silent--header--write out这样的完整形式呢?当我看到这一点时,我也会感到困惑,尤其是在我刚开始写的时候。当你们开始记忆命令时,你们想输入最少的字符这完全是为了提高开发速度。