# ==============================================================
# Nacos API Examples - 服务注册、发现与元数据管理
# Nacos Server: http://127.0.0.1:8848
# Base Path: /nacos/v1
# 默认用户名/密码: nacos / nacos123456
# ==============================================================

# ==============================================================
# 一、服务注册 (Service Registration)
# ==============================================================

# 1.1 注册服务实例
# POST /nacos/v1/ns/instance
curl -X POST 'http://127.0.0.1:8848/nacos/v1/ns/instance' \
  -d 'serverIp=127.0.0.1' \
  -d 'serverPort=8082' \
  -d 'serviceName=user-service' \
  -d 'weight=1.0' \
  -d 'enabled=true' \
  -d 'healthy=true' \
  -d 'ephemeral=true' \
  -d 'clusterName=DEFAULT' \
  -d 'namespaceId=public' \
  -d 'instanceId=127.0.0.1#8082#DEFAULT#user-service#public'

# 1.2 注销服务实例
# DELETE /nacos/v1/ns/instance
curl -X DELETE 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=user-service&instanceId=127.0.0.1#8082#DEFAULT#user-service#public&clusterName=DEFAULT&namespaceId=public'

# 1.3 发送心跳（保活）
# PUT /nacos/v1/ns/instance/beat
curl -X PUT 'http://127.0.0.1:8848/nacos/v1/ns/instance/beat' \
  -d 'serviceName=user-service' \
  -d 'clusterName=DEFAULT' \
  -d 'ip=127.0.0.1' \
  -d 'port=8082' \
  -d 'beatInterval=5000'


# ==============================================================
# 二、服务发现 (Service Discovery)
# ==============================================================

# 2.1 查询服务列表
# GET /nacos/v1/ns/instance/list?serviceName=xxx
curl -s 'http://127.0.0.1:8848/nacos/v1/ns/instance/list?serviceName=user-service&namespaceId=public&clusters=DEFAULT'

# 2.2 查询服务详情
# GET /nacos/v1/ns/service/list?pageNo=1&pageSize=10
curl -s 'http://127.0.0.1:8848/nacos/v1/ns/service/list?pageNo=1&pageSize=100&namespaceId=public'

# 2.3 查询服务详情（单个服务）
# GET /nacos/v1/ns/instance?serviceName=xxx
curl -s 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=user-service&namespaceId=public&clusterName=DEFAULT&healthyOnly=true'

# 2.4 查询服务元数据
# GET /nacos/v1/ns/serviceMetadata?serviceName=xxx
curl -s 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=user-service&namespaceId=public'


# ==============================================================
# 三、服务元数据管理 (Service Metadata)
# ==============================================================

# 3.1 更新服务元数据
# PUT /nacos/v1/ns/serviceMetadata
curl -X PUT 'http://127.0.0.1:8848/nacos/v1/ns/serviceMetadata' \
  -H 'Content-Type: application/json' \
  -d '{
    "serviceName": "user-service",
    "namespaceId": "public",
    "clusterName": "DEFAULT",
    "metadata": {
      "version": "1.0.0",
      "environment": "prod",
      "description": "用户服务",
      "owner": "dev-team",
      "protocol": "http",
      "tags": "auth,user,login"
    },
    "protectThreshold": 0.5,
    "healthChecker": {
      "type": "TCP"
    }
  }'

# 3.2 查询服务元数据
# GET /nacos/v1/ns/service?serviceName=xxx
curl -s 'http://127.0.0.1:8848/nacos/v1/ns/service?serviceName=user-service&namespaceId=public'


# ==============================================================
# 四、健康检查配置 (Health Check Configuration)
# ==============================================================

# 4.1 查询健康检查器类型
# 支持类型: TCP, HTTP, MYSQL, AST
curl -s 'http://127.0.0.1:8848/nacos/v1/ns/operator/metrics?target=health'


# ==============================================================
# 五、配置管理 (Config Management)
# ==============================================================

# 5.1 发布配置
# POST /nacos/v1/cs/configs
curl -X POST 'http://127.0.0.1:8848/nacos/v1/cs/configs' \
  -d 'dataId=user-service.yaml' \
  -d 'group=DEFAULT_GROUP' \
  -d 'namespaceId=public' \
  -d 'content=spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3307/erp_java
    username: erp_user
    password: erp123456' \
  -d 'type=yaml'

# 5.2 查询配置
# GET /nacos/v1/cs/configs?dataId=xxx&group=xxx
curl -s 'http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=user-service.yaml&group=DEFAULT_GROUP&namespaceId=public'

# 5.3 删除配置
# DELETE /nacos/v1/cs/configs
curl -X DELETE 'http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=user-service.yaml&group=DEFAULT_GROUP&namespaceId=public'

# 5.4 监听配置变化
# POST /nacos/v1/cs/configs/listener
curl -X POST 'http://127.0.0.1:8848/nacos/v1/cs/configs/listener' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -d 'Listening-Configs=dataId=user-service.yaml&group=DEFAULT_GROUP&namespaceId=public&contentMD5=xxx'


# ==============================================================
# 六、命名空间管理 (Namespace)
# ==============================================================

# 6.1 创建命名空间
# POST /nacos/v1/console/namespace
curl -X POST 'http://127.0.0.1:8848/nacos/v1/console/namespace' \
  -d 'customNamespaceId=dev' \
  -d 'namespaceName=开发环境' \
  -d 'namespaceDesc=开发测试环境'

# 6.2 查询命名空间列表
# GET /nacos/v1/console/namespaces
curl -s 'http://127.0.0.1:8848/nacos/v1/console/namespaces'


# ==============================================================
# 七、集群管理 (Cluster)
# ==============================================================

# 7.1 查询集群节点列表
# GET /nacos/v1/ns/operator/servers
curl -s 'http://127.0.0.1:8848/nacos/v1/ns/operator/servers?namespaceId=public'

# 7.2 查询当前节点Leader状态
curl -s 'http://127.0.0.1:8848/nacos/v1/ns/raft/leader'

# 7.3 健康检查
curl -s 'http://127.0.0.1:8848/nacos/v1/console/health/readiness'
curl -s 'http://127.0.0.1:8848/nacos/v1/console/health/liveness'
