我正在gitlab-ci文件中写一个脚本,我使用的服务器是Linux来运行管道。
现在我想做两个API调用,而第二个调用依赖于第一个调用。
比如
URL= you can take any HTTPS endpoint (i guess it really doesn't matter)
jsonResponse=$(curl -d $requestJson -X POST $FIRST_URL)
echo $jsonResponse
[{"result":"Success"}]
基于结果字段(successfailure),我想用curl进行另一个API调用。
if response[0].result=success then "curl -d $requestJson -X POST $SECOND_URL" else exit 1
请注意,响应将以数组的形式存在,我想进行两次休眠API调用,而第二次休眠调用依赖于第1次响应,例如jsonResponse=$(curl -d $requestJson -X POST $URL) echo $jsonResponse
你可以做的是将第一次API调用的输出保存到一个文件中(api1-output.json),然后将它传递给下一个对应的作业,在那里你可以读取输出并根据它的响应采取行动。
在你的例子中 .gitlab-ci.yml。 文件。
api1_execution:
image: your_image
script:
- curl -XGET https://my-api1-endpoint.com/api/getSomething > scripts/api1-output.json
artifacts:
paths:
- scripts/api1-output.json
api2_execution:
image: your_image
script:
- API1_OUTPUT= $(cat scripts/api1-output.json)
- // do whatherever you want with API1_OUTPUT
- // fire 2nd API call
对于解析和读取JSON输出,我强烈建议你使用名为 jQ
上面的例子可以为你提供一个想法,从我的角度来看,它是如何做到的。
我想做两个休眠API调用,第二个休眠调用依赖于第一个响应。
你可以使用一些现有的 JSON 库(如 jansson 在C区,或 符号 在C++中),并将它们与一些HTTP客户端库(如 libcurl)和HTTP服务器库(如 libonion)和HTTP服务器库(如).
你应该看看最近的语言实现,如 去吧 或 锈蚀 或 Ocaml 或 SBCL 或 Node.JS. 它们提供了有用的库(与HTTP和REST有关,包括客户端和服务器端)。
你可以考虑使用脚本语言,比如 蟒蛇 或 诡计 或 路亚 或 Perl 或 红宝石等......。他们也有相关的库来满足你的需求。
我倾向于认为 GNU bash 并不是满足你需求的最佳选择(至少也可以考虑 GNU 瞠目结舌).
也可以看一下这两个 github 和 gitlab 对于 开源 与您的需求相关的实现。一旦这些都被指定了(也许使用 EBNF 符号来表示你要实现的消息;也请阅读关于 SOAP 和 JSONRPC)纸上谈兵,实现起来相当简单。
请务必阅读 高级Linux编程 和 系统调用(2) 和 插座(7).
如何正确验证该字段
同时,写出几个有效字段和无效字段的例子。然后考虑使用 regex(7). 还 研究 启发 的源码 现有 与您的需求类似的开源软件.
另见 这个.