Files
blog/write-server/scripts/test-artalk-endpoints.sh
T
2026-06-24 14:34:12 +08:00

76 lines
2.0 KiB
Bash

#!/bin/bash
# 测试不同的 Artalk API 端点
echo ""
echo "==================================="
echo " 测试 Artalk API 端点"
echo "==================================="
echo ""
# 从 .env 读取配置
ARTALK_SERVER=$(grep "^ARTALK_SERVER=" .env | cut -d'=' -f2)
ARTALK_SITE=$(grep "^ARTALK_SITE=" .env | cut -d'=' -f2)
ARTALK_ADMIN_EMAIL=$(grep "^ARTALK_ADMIN_EMAIL=" .env | cut -d'=' -f2)
ARTALK_ADMIN_PASSWORD=$(grep "^ARTALK_ADMIN_PASSWORD=" .env | cut -d'=' -f2)
echo "服务器: $ARTALK_SERVER"
echo "站点: $ARTALK_SITE"
echo ""
# 1. 登录获取 token
echo "1. 登录获取 token..."
LOGIN_RESPONSE=$(curl -s -X POST "$ARTALK_SERVER/api/v2/auth/email/login" \
-H "Content-Type: application/json" \
-d "{\"email\":\"$ARTALK_ADMIN_EMAIL\",\"password\":\"$ARTALK_ADMIN_PASSWORD\"}")
TOKEN=$(echo "$LOGIN_RESPONSE" | grep -o '"token":"[^"]*"' | cut -d'"' -f4)
if [ -z "$TOKEN" ]; then
echo "✗ 登录失败"
echo "响应: $LOGIN_RESPONSE"
exit 1
fi
echo "✓ 登录成功,获取到 token"
echo ""
# 2. 测试不同的 API 端点
echo "2. 测试 API 端点..."
echo ""
# 端点列表
ENDPOINTS=(
"/api/v2/pages?site_name=$ARTALK_SITE&limit=100"
"/api/v2/admin/pages?site_name=$ARTALK_SITE&limit=100"
"/api/v2/comments?site_name=$ARTALK_SITE&page_key=/&limit=5"
"/api/v2/comments?site_name=$ARTALK_SITE&limit=5"
)
for endpoint in "${ENDPOINTS[@]}"; do
echo "测试: $endpoint"
RESPONSE=$(curl -s -w "\n%{http_code}" "$ARTALK_SERVER$endpoint" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN")
HTTP_CODE=$(echo "$RESPONSE" | tail -1)
BODY=$(echo "$RESPONSE" | sed '$d')
if [ "$HTTP_CODE" = "200" ]; then
echo "✓ 成功 ($HTTP_CODE)"
echo " 响应: $BODY" | head -c 100
echo ""
break
else
echo "✗ 失败 ($HTTP_CODE)"
echo " 响应: $BODY" | head -c 100
echo ""
fi
echo ""
done
echo ""
echo "==================================="
echo " 测试完成"
echo "==================================="
echo ""