【发布时间】:2021-12-23 05:04:25
【问题描述】:
我有一个 bash 脚本,它对同一服务的许多不同端点进行大量 RESTful HTTP 调用(通过curl)。我想编写一个 bash 函数来发出可配置的 curl 请求并验证状态是否为 HTTP 200。如果不是,则整个脚本应该退出并显示错误代码。如果是,该函数应返回由 REST API 返回的 HTTP 响应所返回的 JSON。
到目前为止我最好的尝试是:
function callServer() {
payload=$1
curl --request POST \
--url https://myservice.example.com \
--header 'Authorization: $API_KEY' \
--header 'Content-Type: application/json' \
--data '$payload' > jsonResp
}
脚本内部的一个示例用法可能是:
$getWidgetsJson=callServer '{"flim":"flam"}'
或:
$launchMissiles=callServer '{"fizz":"buzz","num":50}'
我想我已经很近了,但我无法从这里的树木中看到森林。如何在 curl 中检查响应的 200 状态,然后使脚本失败或相应地从函数返回 JSON?
【问题讨论】:
-
curl可能会根据是否成功(200)设置退出代码($?)