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)
解释
将输出存储到bash变量中status=$({curlRequest})
将从响应中提取状态代码-w
配置我的HTTP头请求-H
设置我要发布的有效负载数据(此标志还自动设置要发布的请求)--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这样的完整形式呢?当我看到这一点时,我也会感到困惑,尤其是在我刚开始写的时候。当你们开始记忆命令时,你们想输入最少的字符这完全是为了提高开发速度。