面试题答案
一键面试#!/bin/bash
# 定义API地址
api_url="https://example.com/api"
# 定义OAuth 2.0访问令牌
access_token="your_access_token"
# 定义请求体
request_body='{
"key1": "value1",
"key2": "value2"
}'
# 发送POST请求
response=$(curl -s -X POST \
-H "Authorization: Bearer $access_token" \
-H "Content-Type: application/json" \
-d "$request_body" \
"$api_url")
# 获取HTTP响应状态码
status_code=$(echo $response | grep -o '"status_code":[0-9]*' | grep -o '[0-9]*')
# 处理不同的HTTP响应状态码
case $status_code in
200)
echo "请求成功,响应内容:$response"
;;
401)
echo "未授权错误,可能需要重新获取访问令牌"
;;
500)
echo "服务器内部错误"
;;
*)
echo "其他HTTP状态码:$status_code,响应内容:$response"
;;
esac
说明:
- 请将
api_url
替换为实际的API地址。 - 将
access_token
替换为实际的OAuth 2.0访问令牌。 request_body
中定义了JSON格式的请求体内容,请根据实际需求修改。- 上述脚本使用
curl
发送请求,通过grep
提取响应中的状态码,并根据不同状态码进行处理。如果想用wget
,则需安装jq
工具用于处理JSON响应,示例如下:
#!/bin/bash
api_url="https://example.com/api"
access_token="your_access_token"
request_body='{
"key1": "value1",
"key2": "value2"
}'
response=$(wget -q --header="Authorization: Bearer $access_token" --header="Content-Type: application/json" --post-data="$request_body" -O - "$api_url")
status_code=$(echo $response | jq -r '.status_code')
case $status_code in
200)
echo "请求成功,响应内容:$response"
;;
401)
echo "未授权错误,可能需要重新获取访问令牌"
;;
500)
echo "服务器内部错误"
;;
*)
echo "其他HTTP状态码:$status_code,响应内容:$response"
;;
esac
这里假设响应JSON中有status_code
字段来表示状态码,实际使用时请根据API响应结构调整jq
命令。