json - AMBARI + 如何在 json REST API 中设置值
问题描述
下面的 API 示例,将stop
服务kafka
中ambari
export service=kafka
curl -u admin:admin -i -H 'X-Requested-By: ambari' -X PUT -d '{"RequestInfo":{"context":"_PARSE_.STOP.$service","operation_level":{"level":"SERVICE","cluster_name":"$CLUSTER_NAME","service_name":"$service"}},"Body":{"ServiceInfo":{"state":"INSTALLED"}}}' http://$HOST:8080/api/v1/clusters/$CLUSTER_NAME/services/$service
问题在于语法 -_PARSE_.STOP.$service
我们看到实际的服务价值 -kafka
未设置 - PARSE .STOP.$service
所以 ambri 看到这个名字是 - PARSE .STOP.$service 而不是PARSE .STOP.kafka
知道我们如何kafka
在json
语法中设置值吗?
解决方案
当单引号类型文字用于字符串时,变量不会被替换,因此您需要将字符串分成几部分以便能够将一些值插入到结果字符串中。
export service=kafka
curl -u admin:admin -i \
-H 'X-Requested-By: ambari' \
-X PUT \
-d '{"RequestInfo":{"context":"_PARSE_.STOP.'$service'","operation_level":{"level":"SERVICE","cluster_name":"'$CLUSTER_NAME'","service_name":"$service"}},"Body":{"ServiceInfo":{"state":"INSTALLED"}}}' \
http://$HOST:8080/api/v1/clusters/$CLUSTER_NAME/services/$service
这是一个简化的示例,可以清楚地说明:
#!/bin/bash
service=XXX
json='{"A":"$service"}'
echo "wrong JSON: $json"
json='{"A":"'$service'"}' #this string consist of 3 parts '{"A":"' + $service + '"}'
echo "good JSON: $json"
输出:
错误的 JSON:{"A":"$service"}
好的 JSON:{"A":"XXX"}
推荐阅读
- unit-testing - 如何将 MockWebServer 用于 webclient 的 Junit 测试用例?
- reactjs - 使用 useEffect 设置函数在自定义钩子中不起作用
- keras - 使用 ImageDataGenerator 和流训练和测试拆分集
- php - 表单数据不显示在数据库中
- python - Python 中的 sys.exit() 和 break 有什么区别?
- python - 如何使用 reportlab 和 pylabels 将多个项目添加到标签
- flutter - 单击凸起的按钮失败,没有任何错误
- xcode - 如何在 Xcode 中折叠/隐藏“查看为 [设备]”面板
- google-cloud-dlp - Cloud DLP 检查扫描以在同一行中查找多个 infoType
- bots - 我正在尝试发布公告命令,但出现错误