eagleye

cURL 发送 GET 请求终极指南总结

cURL 发送 GET 请求终极指南总结

一、基础用法

cURL 是跨平台命令行工具,支持 HTTP/HTTPS 等协议,适用于 API 测试与调试。

1. 核心操作

  • 最简 GET 请求:直接指定 URLcurl https://api.example.com/data
  • 添加请求头:通过-H选项添加(如认证、内容类型)curl -H "Authorization: Bearer your_token" -H "Content-Type: application/json" https://api.example.com/data
  • 处理 JSON 响应:结合jq格式化输出(需先安装jq)curl https://api.example.com/data | jq .
  • 保存响应到文件:使用-o选项指定文件名curl -o response.json https://api.example.com/data

二、针对用户场景的专用命令

1. 测试用户档案端点

验证 JWT 认证的核心接口:

curl -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." http://127.0.0.1:8000/api/users/me/

2. 测试诊断端点

检查令牌完整性与验证状态:

curl -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." http://127.0.0.1:8000/api/auth/diagnostic/

3. Base64 编码令牌

适用于特殊传输场景(如需编码令牌):

ENCODED_TOKEN=$(echo -n "原始令牌" | base64) # 编码令牌

curl -H "Authorization: Bearer base64:$ENCODED_TOKEN" http://127.0.0.1:8000/api/users/me/

三、高级用法

1. 调试与监控

  • 详细输出:使用-v查看完整请求/响应头(含连接过程)curl -v -H "Authorization: Bearer your_token" http://127.0.0.1:8000/api/users/me/
  • 仅响应头:使用-I快速获取状态码等元信息curl -I -H "Authorization: Bearer your_token" http://127.0.0.1:8000/api/users/me/
  • 跟随重定向-L自动跳转(如 API 重定向场景)curl -L https://api.example.com/redirect
  • 忽略 SSL 验证(仅测试用):-k跳过证书检查curl -k https://localhost:8000/api/users/me/
  • 设置超时-m限制请求最大耗时(秒)curl -m 10 https://api.example.com/data # 10秒超时

2. 异常处理

四、实用技巧

1. 脚本自动化

编写 Bash 脚本实现测试流程:

#!/bin/bash

API_URL="http://127.0.0.1:8000/api/users/me/"

TOKEN="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."

response=$(curl -s -H "Authorization: Bearer $TOKEN" $API_URL)

if [ $? -eq 0 ]; then

echo "请求成功:"

echo $response | jq . # 格式化输出

else

echo "请求失败"

fi

2. 分页与查询

  • 分页 API:结合jq提取下一页链接next_page=$(curl -s "https://api.example.com/data?page=1" | jq -r '.next_page')

curl $next_page

  • 查询参数:直接拼接 URL(或-G配合-d)curl "http://api.example.com/search?q=keyword&limit=10&sort=desc"

3. 性能测试

统计请求各阶段耗时(如 DNS 解析、连接时间):

curl -w "\n时间统计:\n总时间: %{time_total}秒\nDNS 解析: %{time_namelookup}秒\n连接时间: %{time_connect}秒\n" \

-o /dev/null -s https://api.example.com/data

五、常见问题解决

问题场景

解决方案

特殊字符(空格等)

URL 编码:curl "https://api.example.com/search?q=$(echo 'query' | jq -sRr @uri)"

gzip 压缩响应

添加头并解压:curl -H "Accept-Encoding: gzip" --compressed https://api.example.com/data

保存/复用 Cookie

保存:curl -c cookies.txt https://api.example.com/login;使用:curl -b cookies.txt https://api.example.com/protected

六、cURL 命令选项速查

选项

说明

示例

-H

添加请求头

-H "Content-Type: application/json"

-o

保存响应到文件

-o response.json

-v

详细输出(调试模式)

-v

-L

跟随重定向

-L

-k

忽略 SSL 证书验证

-k

-m

设置超时时间(秒)

-m 10

-s

静默模式(无进度输出)

-s

七、Windows 环境使用

1. 安装与配置

  • 下载地址:cURL for Windows
  • 或使用 Git Bash(内置类 Linux 环境)。
  • CMD 终端curl.exe -H "Authorization: Bearer your_token" http://127.0.0.1:8000/api/users/me/
  • PowerShell(推荐使用原生curl.exe):curl.exe -Uri "http://127.0.0.1:8000/api/users/me/" -Headers @{"Authorization"="Bearer your_token"}
  • 零签名修改:不篡改令牌任何部分,确保 JWT 签名完整性(解决传输中签名被改问题)。
  • 精确控制:完全手动管理请求头/体,避免测试工具隐式处理。
  • 脚本化测试:支持自动化脚本,便于回归测试与持续集成。
  • 跨平台一致Windows/macOS/Linux 表现统一,兼容性强。

2. 基础命令示例

八、推荐 cURL 的核心优势

cURL 是解决 API 测试中令牌签名篡改问题的可靠工具,尤其适合需要精确控制请求的场景。

 

posted on 2025-07-05 15:22  GoGrid  阅读(307)  评论(0)    收藏  举报

导航