【全栈开发03】—— curl 常用参数详解与 HTTP 请求实战

【全栈开发03】------ curl 常用参数详解与 HTTP 请求实战

在接口开发、联调与测试过程中,curl 是命令行下最通用、最轻量化的 HTTP 请求工具,无需 GUI 即可快速发送 GET/POST/PUT 等请求、上传文件、调试接口,堪称后端开发的 "瑞士军刀"。

前文我分别梳理了HTTP 请求方法HTTP 请求参数的核心规范:

本文将基于以上 HTTP 基础,系统讲解 curl 所有高频参数的含义、用法与实战示例,让你一条命令搞定接口调试。


一、curl 基础认知

1.1 什么是 curl

curl = Client URL ,是跨平台命令行工具,支持 HTTP/HTTPS/FTP 等协议,用于发送网络请求、接收响应、上传 / 下载文件

1.2 基础语法

运行

复制代码
curl [参数选项] 请求地址URL
  • 不加参数:默认发送GET 请求
  • 加参数:实现 POST、传参、上传、加请求头等复杂操作

二、HTTP 请求方法极简回顾(必看)

curl-X 参数用于指定请求方法,方法语义严格遵循 HTTP 规范,这里快速回顾核心方法(详情看前文链接):

  1. GET:查询资源,参数放 URL(Query),无请求体
  2. POST:提交 / 创建资源,参数放请求体(Body)
  3. PUT:全量更新资源
  4. DELETE:删除资源
  5. PATCH:部分更新资源
  6. HEAD:仅获取响应头,不返回体
  7. OPTIONS:跨域预检、查询支持的方法

三、HTTP 请求参数极简回顾(必看)

curl 传参对应 HTTP 参数位置,不同参数用不同 curl 命令:

  1. Query 参数 :URL 后拼接?key=val&key2=val2
  2. Header 参数:请求头区域,放 Token、Content-Type 等
  3. Body 参数:请求体,放 JSON、表单、文件
  4. Path 参数 :URL 路径部分,如/api/user/10086

四、curl 核心参数全解(按场景分类)

4.1 请求方法类参数

-X / --request
  • 含义:指定 HTTP 请求方法(GET/POST/PUT/DELETE 等)
  • 用法-X 方法名
  • 示例

运行

复制代码
# 发送POST请求
curl -X POST http://localhost:5000/extract
# 发送DELETE请求
curl -X DELETE http://localhost:5000/user/10086

4.2 数据提交类参数(最常用)

1)-d / --data
  • 含义 :发送普通表单数据application/x-www-form-urlencoded),不能传文件
  • 规则key=val&key2=val2,自动适配 POST 请求
  • 示例

运行

复制代码
curl -X POST -d "username=admin&password=123456" http://localhost:5000/login
2)✅ -F / --form
  • 含义 :发送表单 + 文件上传multipart/form-data

  • curl 强制规则

    • 文本:字段名=值
    • 文件:字段名 =@本地文件路径@是 curl 规定的文件标识)
  • 你的实战示例

运行

复制代码
curl -F 'image=@fee3df962d763b2242ac0f6bf47b61cd.jpg' http://localhost:5000/extract
  • 多字段混合

运行

复制代码
curl -F "image=@pic.jpg" -F "type=phone" http://localhost:5000/extract
3)--data-raw
  • 含义 :发送原始数据(如 JSON),不解析@符号
  • 示例

运行

复制代码
curl -X POST -H "Content-Type: application/json" --data-raw '{"phone":"198xxxx0501"}' http://localhost:5000/api

4.3 请求头类参数

-H / --header
  • 含义:添加 / 修改 HTTP 请求头(Token、Content-Type、Api-Version)
  • 用法-H "键:值",可多个
  • 示例

运行

复制代码
# 发送JSON请求必备
curl -X POST -H "Content-Type: application/json" -d '{"username":"test"}' http://localhost:5000/register
# 带Token认证
curl -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9" http://localhost:5000/user/info

4.4 调试类参数

1)-v / --verbose
  • 含义调试神器,显示完整请求过程(请求头、参数、响应、握手信息)
  • 用法:接口报错必加

运行

复制代码
curl -v -F "image=@pic.jpg" http://localhost:5000/extract
2)-i
  • 含义 :输出响应头 + 响应体

运行

复制代码
curl -i http://localhost:5000/extract
3)-I(大写 i)
  • 含义 :仅获取响应头(对应 HTTP HEAD 方法)

运行

复制代码
curl -I http://localhost:5000/user/10086

4.5 文件下载类参数

1)-O(大写 o)
  • 含义 :下载文件,自动用远程文件名保存

运行

复制代码
curl -O https://example.com/img.jpg
2)-o(小写 o)
  • 含义 :下载文件,自定义本地文件名

运行

复制代码
curl -o my_pic.jpg https://example.com/img.jpg

4.6 认证与安全类参数

1)-u / --user
  • 含义:基础身份验证(用户名:密码)

运行

复制代码
curl -u admin:123456 http://localhost:5000/auth
2)-k / --insecure
  • 含义:忽略 SSL 证书校验(调试自签证书接口用)

运行

复制代码
curl -k https://localhost:5000/extract

4.7 其他实用参数

表格

参数 全称 含义
-L --location 自动跟随 3xx 重定向
-s --silent 静默模式,不显示进度条
-A --user-agent 模拟浏览器 UA

五、高频实战场景(直接复制用)

场景 1:GET 请求 + Query 参数

运行

复制代码
curl "http://localhost:5000/goods?page=1&size=10&keyword=手机"

场景 2:POST 请求 + JSON 数据

运行

复制代码
curl -X POST -H "Content-Type: application/json" -d '{"username":"test","password":"123456"}' http://localhost:5000/register

场景 3:文件上传(你的核心场景)

运行

复制代码
curl -F "image=@你的文件路径" http://localhost:5000/extract

场景 4:接口调试(查错必备)

运行

复制代码
curl -v -F "image=@test.jpg" http://localhost:5000/extract

场景 5:下载文件

运行

复制代码
curl -O https://example.com/file.jpg

六、新手必避 5 大误区

  1. -F 不加@:把文件名当文本传,无法上传文件
  2. GET 请求用 Body:HTTP 规范允许但框架忽略,参数放 Query/Path
  3. 传 JSON 不加Content-Type:后端无法解析,报 400/500
  4. 敏感数据放 URL:Token、密码用 Query 会泄露,用 Body/Header
  5. 字段名不匹配curlimage=必须和后端request.files.get("image")一致

七、总结

  1. curl 是 HTTP 请求的命令行实现,参数完全对应 HTTP 方法与参数位置

  2. @ 是 curl 规定字段名是后端规定,业务代码只处理数据不关心上传格式

  3. 核心参数速记:

    • -X:指定请求方法
    • -F+@:文件上传
    • -d:普通表单
    • -H:请求头
    • -v:调试
  4. 结合HTTP 请求方法HTTP 参数类型,curl 命令一次写对,联调效率翻倍

相关推荐
Mr. zhihao44 分钟前
从零手写一个 RPC 框架:用一条因果链推导出 Dubbo 的骨架
网络协议·rpc·dubbo
白猫不黑1 小时前
从运维到网络安全:转行优势、路径与薪资前景全解析
运维·网络·web安全·网络安全·信息安全·渗透测试
dog2501 小时前
多路径聚合效率的统计理论
网络·tcp/ip
草莓熊Lotso1 小时前
【Linux网络加餐】手动部署:SSH 与 Web 服务实战 + 底层原理全解析
linux·运维·网络·人工智能·python·langchain·ssh
剑锋所指,所向披靡!1 小时前
TCP并发服务器
服务器·网络·tcp/ip
网安蟹佬霸2 小时前
密码学安全实战:从加密原理到哈希破解的完整攻防指南
网络·算法·安全·web安全·开源·密码学·哈希算法
AI备忘录2 小时前
(十一)DHCP 配置命令五厂商对照:华为 华三 锐捷 迈普 思科
服务器·网络·网络协议·网络安全·华为
迪康coolmu3 小时前
企业文件外发防泄漏实践:从通道封堵到三层全链路管控
大数据·运维·网络·人工智能·安全·阿里云
星恒讯工业路由器11 小时前
新一代通信网:从“连接万物”到“智联万物”的关键跃迁
网络·物联网·智能路由器·工业路由器·工业物联网·5g-a·新一代通信网
暴力求解12 小时前
Linux网络---传输层协议TCP(二)
linux·服务器·开发语言·网络·tcp/ip