当前位置: 首页 > news >正文

深入浅出地讲解如何使用CURL命令行工具进行API测试

目录

  • 一、CURL 请求的基本结构
  • 二、4种HTTP请求方法测试
    • 1. GET:获取资源(最简单,默认方法)
    • 2. POST:提交数据(创建资源)
    • 3. PUT:更新资源(全量替换)
    • 4. DELETE:删除资源
  • 三、调试必备:5 个实用选项
  • 四、避坑指南:这些细节要注意
  • 五、对比 Postman:curl 的优势

一、CURL 请求的基本结构

curl [选项] [URL]
  • 选项:控制请求方法、头信息、数据、认证等(如 -X 指定方法,-H 加请求头,-d 传数据)。

  • URL:API 的端点地址(如 https://jsonplaceholder.typicode.com)。

二、4种HTTP请求方法测试

1. GET:获取资源(最简单,默认方法)

作用:从服务器拉取数据(如查列表、详情),参数跟在 URL 后(查询字符串)。
基础用法:直接访问 URL

curl -X GET https://jsonplaceholder.typicode.com/users  # 默认发 GET 请求,获取所有用户

带查询参数(两种方式,推荐第二种!)

  • 方式 1:URL 硬拼参数(适合简单场景):
curl https://api.example.com/users?page=2&size=10 # 查第 2 页,每页 10 条

⚠️ 缺点:特殊字符(如空格、&)需手动转义,否则会被 Shell 解析错误。

  • 方式 2:用 --get + -d 自动编码(更规范,自动处理特殊字符):
curl --get \ # 明确是 GET 请求
-d "page=2" \ # 参数 1
-d "size=10" \ # 参数 2(多个 -d 自动用 & 拼接)
https://api.example.com/users

👉 效果:等价于 https://api.example.com/users?page=2&size=10,但无需手动转义!

2. POST:提交数据(创建资源)

作用:向服务器发数据(如注册、登录),数据藏在 请求体 里。
场景 1:发送表单数据application/x-www-form-urlencoded 格式)

curl -X POST \ # 显式声明 POST(也可省略,因为 -d 会默认触发 POST)​
-d "username=admin" \ # 键值对,多个用 & 连接(如 -d "user=xxx&pass=yyy")​
-d "password=123" \ 
https://api.example.com/login

场景 2:发送 JSON 数据(必须加 Content-Type 头!)

curl -X POST \
-H "Content-Type: application/json" \ # 告诉服务器:我发的是 JSON!
-d '{"name": "Bob"}' \ # JSON 数据(外层用单引号,避免 Shell 解析双引号)
https://jsonplaceholder.typicode.com/users/

⚠️ 注意:

  • JSON 里的双引号要和外层单引号配合(或转义,如 "{\"user\":\"xxx\"}",但单引号更方便)。
  • 如果 JSON 内容复杂,可把数据存到文件,用 -d @文件路径 读取(如 -d @data.json)。

3. PUT:更新资源(全量替换)

作用:修改已有资源(如改用户信息),语义是 “替换” 整个资源(幂等:多次调用结果一样)。
示例:更新用户 ID=1 的姓名

curl -X PUT \
-H "Content-Type: application/json" \
-d '{"name": "NewName"}' \ # 要更新的字段
https://jsonplaceholder.typicode.com/users/1 # URL 明确资源 ID

👉 和 POST 类似,只是方法换成 PUT,URL 需包含资源标识(如 /users/1)。

4. DELETE:删除资源

作用:删除服务器上的资源(如删用户、订单)。
示例:删除用户 ID=1

curl -X DELETE https://jsonplaceholder.typicode.com/users/1  # URL 直接定位资源
  • 一般不用请求体(HTTP 协议允许,但 API 很少这么设计),参数可通过 URL 或头传递。

三、调试必备:5 个实用选项

选项作用示例
-i显示 响应头 + 响应体(看状态码、返回内容)curl -i https://jsonplaceholder.typicode.com
-v显示 完整请求过程(含请求头、响应头,调试神器)curl -v -X POST ...
-u user:pass基本认证(用户名:密码)curl -u admin:123 https://api.com
-H "头信息"自定义请求头(如 Token 认证)curl -H "Authorization: Bearer xxx" ...
-o 文件名保存响应到文件curl -o result.json https://api.com

四、避坑指南:这些细节要注意

  1. URL 特殊字符:用引号包裹 URL(如 curl "``https://api.com/?q=hello&lang=en``"),避免 & 被 Shell 解析成后台运行。

  2. JSON 格式:确保大括号、引号配对,可先用在线工具校验 JSON 语法。

  3. SSL 证书问题:测试环境若证书无效,加 -k 忽略验证(生产环境禁用!):

curl -k https://不安全的域名  # 跳过 SSL 检查

五、对比 Postman:curl 的优势

  • 无界面依赖:服务器环境(如 Linux 终端)直接用,无需装软件。

  • 脚本化:把 curl 命令写到 Shell 脚本里,批量测试 API(如循环调用不同 ID 的 DELETE)。

  • 灵活组合:和管道、 grep 等命令配合,快速处理响应(如 curl ... | grep "error" 找错误)。

http://www.dtcms.com/a/412518.html

相关文章:

  • 网站版面的图文是怎么做的门户网站ip地址段
  • 笔记:现代操作系统:原理与实现(4)
  • 基于OFDM+QPSK调制解调的通信链路matlab性能仿真,包含同步模块,信道估计和编译码
  • 宁波网站推广方式西樵网站制作公司
  • apache建设网站网站设计公司官网
  • 桂林北站是高铁站吗以公司做网站
  • 【anaconda】anaconda安装配置,git安装配置以及pytorch安装
  • 仓颉编程语言青少年基础教程系列汇总
  • C++中STL---map
  • Java基础 9.26
  • 优秀响应式网站南宁百度seo优化
  • 营销型网站建设需要注意什么龙岗建设局网站
  • 用js做简单的网站页面软件外包公司为什么不好
  • 《2025年AI产业发展十大趋势报告》七十二
  • 模电基础:场效应管的放大电路
  • 黑色网站后台网页版传奇如何作弊?
  • 新手学易语言多久可以做网站广州网站建设推广公司有哪些
  • Python从入门到实战 (14):工具落地:用 PyInstaller 打包 Python 脚本为可执行文件
  • 如何优化网站导航阿里云服务器做电影网站
  • 企业代运营公司seo广告优化
  • 快手做任务网站济南手机网站建设公司排名
  • 重庆建网站推广网站安全建设方案需求分析
  • 湖北省建设教育协会网站首页网站开发的几个主要阶段
  • 嵌入式学习ARM架构12——SPI
  • 网站建设与维护期末试卷网络推广托管公司深圳
  • 购物网站建设的意义与目的个人简介网页制作
  • 永康网站设计饮料企业哪个网站做的比较好
  • 数据结构——基本排序算法
  • AI编码工具为何加速开发却难保质量?
  • 如何与知名网站做友情链接wordpress页面和文章