目 录CONTENT

文章目录

Nacos的API高级应用

JamKing
2025-12-25 / 0 评论 / 0 点赞 / 5 阅读 / 0 字

1、账户access_token

accessToken=$(curl -s -X POST 'http://localhost:30048/nacos/v1/auth/login' -H 'Content-Type: application/x-www-form-urlencoded' -d 'username=nacos&password=nacos' |jq -r '.accessToken')

image-KpCM.png

2、获取配置

image-TwFe.png

curl -s -X GET "http://127.0.0.1:30048/nacos/v2/cs/config?accessToken=${accessToken}&dataId=test.txt&group=DEFAULT_GROUP&namespaceId=public"

#或
curl -X GET "http://127.0.0.1:30048/nacos/v1/cs/configs?dataId=demo02.yml&group=demo_group&tenant=demo&accessToken=${accessToken}"

image-auCp.png

3、发布配置

curl -d 'dataId=test.txt' \
  -d 'group=DEFAULT_GROUP' \
  -d 'namespaceId=public' \
  -d 'content=aNewTest' \
  -X POST "http://127.0.0.1:8848/nacos/v2/cs/config?accessToken=${accessToken}"

image-uMmm.png

方法一

curl -d "dataId=demo.yml" \
  -d "group=demo_group" \
  -d "namespaceId=demo" \
  -d "type=yaml" \
  -d "content=$(cat demo.yml)" \
  -X POST "http://127.0.0.1:30048/nacos/v2/cs/config?accessToken=${accessToken}"

image-QaZD.png

方法二

curl -d "dataId=demo.yml" \
  -d "group=demo_group" \
  -d "namespaceId=demo" \
  -d "type=yaml" \
  --data-urlencode "content@/data/nacos/experience/demo.yml" \
  -X POST "http://127.0.0.1:30048/nacos/v2/cs/config?accessToken=${accessToken}"

image-qnqu.png

方法三

curl -H "Content-Type: multipart/form-data" \
  -F "policy=OVERWRITE" \
  -F "file=@nacos_config_export_20251224143456.zip" \
  -F "import=true" \
  -F "accessToken=${accessToken}" \
  -X POST "http://127.0.0.1:30048/nacos/v1/cs/configs?namespace=demo"

image-mnmG.png

4、查看已有的配置文件

url -s -X GET "http://127.0.0.1:30048/nacos/v2/cs/history/configs?namespaceId=demo&accessToken=${accessToken}"|jq -r '.data[].dataId'

image-IBtt.png

5、备份配置

echo "$(curl -s -X GET "http://127.0.0.1:30048/nacos/v2/cs/config?dataId=demo.yml.clone.clone&group=demo_group&namespaceId=demo&accessToken=${accessToken}" |jq -r '.data')" > backup.yml

#或
curl -X GET "http://127.0.0.1:30048/nacos/v1/cs/configs?dataId=demo02.yml&group=demo_group&tenant=demo&accessToken=${accessToken}" -o backup.yml

image-DHAA.png

image-ZHad.png

6、克隆配置文件

主要结合【获取配置】或【备份配置】+【发布配置】进行,实现api克隆配置文件或本地修改发布的目的

#!/bin/bash
namespace=demo
target_namespace=demo
accessToken="eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTc2NjU4Mjc2OX0.buuT5kS-BQEipaijQwXMKXDJ98NORfv46nTOtUjx54Y"
keyword=02
nacos_server=127.0.0.1
nacos_port=30048
clone_suffix="clone"
nacos_url="${nacos_server}:${nacos_port}/nacos/v2/cs/config"

curl -s -X GET "http://${nacos_server}:${nacos_port}/nacos/v2/cs/history/configs?namespaceId=${namespace}&accessToken=${accessToken}"|jq --arg kw "${keyword}" '.data[] | select(.dataId | contains($kw)) | {dataId, group, type}' > filtered_configs.json

if [ ! -s "filtered_configs.json" ]; then
    echo "未找到包含关键字 '${keyword}' 的配置。"
    exit 0
fi

echo "找到以下待克隆的配置:"
jq -r '.dataId' filtered_configs.json

echo "开始克隆到命名空间 '${target_namespace}'..."
jq -c '.' filtered_configs.json | while read config; do
    data_id=$(echo "$config" | jq -r '.dataId')
    group=$(echo "$config" | jq -r '.group')
    type=$(echo "$config" | jq -r '.type')
    get_url="${nacos_url}?dataId=${data_id}&group=${group}&namespaceId=${namespace}&accessToken=${accessToken}"
    content=$(curl -s -X GET "http://${get_url}" |jq -r '.data')
    echo "${content}" > source/${data_id}
  
    post_url="${nacos_url}?accessToken=${accessToken}"
    response=$(curl -s -X POST "http://${post_url}" \
       -d "dataId=${data_id}.${clone_suffix}" \
       -d "group=${group}" \
       -d "namespaceId=${target_namespace}" \
       -d "type=yaml" \
       --data-urlencode "content@source/${data_id}" |jq -r '.data')
    if [ "$response" = "true" ]; then
          echo "成功克隆: ${data_id}.${clone_suffix} (Group: ${group})"
    else
          echo "克隆失败: ${data_id}.${clone_suffix}, 响应: ${response}"
    fi
done

image-VtyW.png

image-bZed.png

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区