test_http_api.sh 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #!/bin/bash
  2. # HTTP服务器测试脚本
  3. BASE_URL="http://localhost:8080"
  4. echo "=========================================="
  5. echo "RTSP视频流管理HTTP服务器 API测试"
  6. echo "=========================================="
  7. echo ""
  8. # 颜色定义
  9. GREEN='\033[0;32m'
  10. RED='\033[0;31m'
  11. YELLOW='\033[1;33m'
  12. NC='\033[0m' # No Color
  13. # 测试函数
  14. test_api() {
  15. local method=$1
  16. local endpoint=$2
  17. local description=$3
  18. echo -e "${YELLOW}测试: ${description}${NC}"
  19. echo "请求: ${method} ${endpoint}"
  20. echo "响应:"
  21. if [ "$method" == "GET" ]; then
  22. curl -s -w "\nHTTP状态码: %{http_code}\n" "${BASE_URL}${endpoint}" | jq . 2>/dev/null || curl -s -w "\nHTTP状态码: %{http_code}\n" "${BASE_URL}${endpoint}"
  23. elif [ "$method" == "DELETE" ]; then
  24. curl -s -X DELETE -w "\nHTTP状态码: %{http_code}\n" "${BASE_URL}${endpoint}" | jq . 2>/dev/null || curl -s -X DELETE -w "\nHTTP状态码: %{http_code}\n" "${BASE_URL}${endpoint}"
  25. fi
  26. echo ""
  27. echo "----------------------------------------"
  28. echo ""
  29. }
  30. # 检查服务器是否运行
  31. echo "检查服务器状态..."
  32. if ! curl -s "${BASE_URL}/api/timestamps" > /dev/null 2>&1; then
  33. echo -e "${RED}错误: HTTP服务器未运行或无法连接${NC}"
  34. echo "请先启动服务器: ./cmake-build-debug/jtjai_http_server"
  35. exit 1
  36. fi
  37. echo -e "${GREEN}服务器已就绪${NC}"
  38. echo ""
  39. # 1. 列出所有时间戳目录
  40. test_api "GET" "/api/timestamps" "列出所有时间戳目录"
  41. # 2. 列出所有视频
  42. test_api "GET" "/api/videos" "列出所有视频"
  43. # 3. 列出指定时间戳的视频(需要根据实际情况修改)
  44. # 先获取第一个时间戳
  45. FIRST_TIMESTAMP=$(curl -s "${BASE_URL}/api/timestamps" | jq -r '.timestamps[0].timestamp' 2>/dev/null)
  46. if [ ! -z "$FIRST_TIMESTAMP" ] && [ "$FIRST_TIMESTAMP" != "null" ]; then
  47. echo -e "${YELLOW}找到时间戳: ${FIRST_TIMESTAMP}${NC}"
  48. test_api "GET" "/api/videos/${FIRST_TIMESTAMP}" "列出时间戳 ${FIRST_TIMESTAMP} 的视频"
  49. test_api "GET" "/api/videos?timestamp=${FIRST_TIMESTAMP}" "列出时间戳 ${FIRST_TIMESTAMP} 的视频(查询参数方式)"
  50. fi
  51. echo ""
  52. echo -e "${GREEN}测试完成!${NC}"
  53. echo ""
  54. echo "删除操作测试(注释掉以避免误删):"
  55. echo "# 删除单个视频:"
  56. echo "# curl -X DELETE \"${BASE_URL}/api/video?path=./output/TIMESTAMP/filename.mp4\""
  57. echo ""
  58. echo "# 删除整个时间戳目录:"
  59. echo "# curl -X DELETE \"${BASE_URL}/api/timestamp/TIMESTAMP\""
  60. echo ""