我正在努力通过我的 gitlabci 文件中的 CURL 发出发布请求。我正在尝试发布到 API,但是,由于某种原因,正文似乎没有发送。
我已经在各种在线验证器中测试了我的curl请求以及在邮递员中导入,这一切似乎都工作正常。
请求通过我们的 API 正确验证,正文 (-d) 根本不发送 有人能指出我正确的方向吗?
update:
stage: update
script:
- >-
curl -X POST -v --location "www.example.com/example" \
-H "Authorization: Api-Token anAPiToken" \
-H "Content-Type: application/json; charset=utf-8" \
-d '{ "entitySelector": "entityId(SERVICE-8E3722AC3F76B09D)",
"eventType": "CUSTOM_DEPLOYMENT",
"title": "New Deployment Triggered",
"properties": {
"RemediationUrl": "www.example.com/example"
}
}'
在一行中发送 -d 根据其他 SO 问题的建议,在 gitlabci 中使用 Curl 的各种不同方法
我在 GitHub actions 中测试了这个,但原理对于 GitLab 来说应该是一样的。
当前您的脚本的评估结果如下:
curl -X POST -v --location "www.example.com/example" \ -H "Authorization: Api-Token anAPiToken" \ -H "Content-Type: application/json; charset=utf-8" \ -d '{ "entitySelector": "entityId(SERVICE-8E3722AC3F76B09D)",
"eventType": "CUSTOM_DEPLOYMENT",
"title": "New Deployment Triggered",
"properties": {
"RemediationUrl": "www.example.com/example"
}
}'
注意中间额外的
\
字符。我假设您尝试在这些行上添加有意的行延续,而不是在最后一个 JSON 正文部分。然而,事实并非如此。
>-
基本上分解为组件:
>
删除除最后一个之外的所有内部换行符
-
是一个 chomping 指示符 "剥离由“-”chomping 指示符指定。在这种情况下,最后的换行符和任何尾随空行将从标量的内容中排除。 "
所以换句话说,你不需要自己用
/
指定续行,这些已经被自动删除了。
所以基本上,这应该有效:
script:
- >-
curl -X POST -v --location "www.example.com/example"
-H "Authorization: Api-Token anAPiToken"
-H "Content-Type: application/json; charset=utf-8"
-d '{ "entitySelector": "entityId(SERVICE-8E3722AC3F76B09D)",
"eventType": "CUSTOM_DEPLOYMENT",
"title": "New Deployment Triggered",
"properties": {
"RemediationUrl": "www.example.com/example"
}
}'
但是请注意,这会将所有内容输出到一行上。如果您出于某种原因需要并希望在 POST 正文内容上进行换行,请参阅如何在 YAML 中将字符串分成多行?了解更多信息。