怎么测试一个接口,postman?form?axios?

简介: 怎么测试一个接口,postman?form?axios?

怎么测试一个接口,postman?form?axios?


接口写出来之后,想要测试其正确性。最快速的方法莫过于postman,能脱离代码。当然前端还可以form表单提交或者利用axios。这里想说,当一个接口出来以后,根据其不同的content-type,三种测试方式也有很大不同。

先说说content-type

请求头和响应头总会有content-type,正如翻译内容类型,请求的时候表示body里的内容类型,响应的时候表示返回体里的内容类型。

get请求的时候没有body,参数是拼接在接口地址后面的,所以get请求的时候,没有content-type

post请求的时候,如果有body,接口肯定有content-type的值,而前端必须将请求头设置成相应的值,这样接口拿到正确的数据,不同的content-type,前后端处理的方法很多时候也是不同的。当然如果后端兼容处理这几种方式,那么测试更加随意了~~

content-type有很多类型,但是接口常用的是三种类型如下(如果有上传文件则只能用multipart/form-data):

  • application/json,此时前端传的body格式是{"a":1,"b":2}
  • application/x-www-form-urlencoded,此时前端传的body格式是a=1&b=2
  • multipart/form-data,此时前端传的body格式如下,每个表单项使用 --[boundary] 分割开来,最后一行使用 --[boundary]-- 结尾,下面对应的就是{name:'huahua',file:文件流,}
------WebKitFormBoundary6VWyGefevm60vjtn
Content-Disposition: form-data; name="name"
huahua
------WebKitFormBoundary6VWyGefevm60vjtn
Content-Disposition: form-data; name="file"; filename="study.md"
Content-Type: text/markdown
------WebKitFormBoundary6VWyGefevm60vjtn--

application/json

当接口规定需要的content-typeapplication/json

  • 代码里可以axios.post('/api/user',{a:1,b:2}),axios会将对象自动变成json对象之后,发送出去,content-type也会因为第二个参数是对象,而自动变成application/json,无需额外设置。如果用的别的库,根据库看看是否需要设置请求头Content-Type = application/json
  • postman里,使用的时候,如下图:,这里postman也会因为你选择JSON,而自动设置Content-Type = application/json

这里弱弱的说下后台app.use(bodyParser.json())然后拿到的let {a,b} = req.body

application/x-www-form-urlencoded

当接口规定需要的content-typeapplication/x-www-form-urlencoded

  • 代码里可以axios.post('/api/user',Qs.stringify({a:1,b:2})),stringify会将其变成a=1&b=2,content-type也会因为第二个参数是字符串,而自动变成application/application/x-www-form-urlencoded,无需额外设置。如果用的别的库,根据库看看是否需要设置请求头Content-Type = application/x-www-form-urlencoded,备注axios还可以在transformRequest处理,不细说了
  • 代码里还可以form元素自动提交<form method="post" action="/api/user"><input type="text" name="a"><input type="text" name="b"><button type="submit">提交</button></form>,这里不需要设置enctype,因为其默认值就是application/application/x-www-form-urlencoded
  • postman里,使用的时候,如下图:,这里postman也会因为你选择x-www-form-urlencoded,而自动设置Content-Type = application/x-www-form-urlencoded

这里弱弱的说下后台app.use(bodyParser.urlencoded({ extended: false }))然后拿到的let {a,b} = req.body

multipart/form-data

当接口规定需要的content-typemultipart/form-data时,分为两种情况:没有上传文件和有上传文件

没有上传文件的时候

  • 代码里可以let formData = new FormData();formData.append('a',1);formData.append('b',2);axios.post('/api/user',formData),axios会自动将其变成加边界的形式,content-type也会因为第二个参数是formData,而自动变成application/multipart/form-data,无需额外设置。如果用的别的库,根据库看看是否需要设置请求头Content-Type = multipart/form-data,备注axios还可以在transformRequest处理,不细说了
  • 代码里还可以form元素自动提交<form method="post" action="/api/user" enctype="multipart/form-data"><input type="text" name="a"><input type="text" name="b"><button type="submit">提交</button></form>,这里必须设置enctype
  • postman里,使用的时候,如下图:,这里postman也会因为你选择multipart/form-data,而自动设置Content-Type = application/multipart/form-data

这里弱弱的说下后台let upload = multer();app.post('/formdata', upload.none(), (req, res)=> { let {a,b} = req.body;... }),没有文件加上upload.none()

有上传文件的时候

  • 代码里可以let formData = new FormData();formData.append('a',1);formData.append('avatar',xx.files[0]);axios.post('/api/user',formData),axios会自动将其变成加边界的形式,content-type也会因为第二个参数是formData,而自动变成application/multipart/form-data,无需额外设置。如果用的别的库,根据库看看是否需要设置请求头Content-Type = multipart/form-data,备注axios还可以在transformRequest处理,不细说了
  • 代码里还可以form元素自动提交<form method="post" action="/api/user" enctype="multipart/form-data"><input type="text" name="a"><input type="file" name="avatar"><button type="submit">提交</button></form>,这里必须设置enctype
  • postman里,使用的时候,如下图:,这里postman也会因为你选择multipart/form-data,而自动设置Content-Type = application/multipart/form-data

这里弱弱的说下后台let upload = multer({ dest: 'uploads/' });app.post('/formdata', upload.single('avatar'), (req, res)=> { let file= req.avatar;let {a,b} = req.body;... }),文件暂存在uploads/multer的具体用法

参考文献

目录
相关文章
|
1月前
|
人工智能 数据可视化 测试技术
Postman 性能测试教程:快速上手 API 压测
本文介绍API上线后因高频调用导致服务器告警,通过Postman与Apifox进行压力测试排查性能瓶颈。对比两款工具在批量请求、断言验证、可视化报告等方面的优劣,探讨API性能优化策略及行业未来发展方向。
Postman 性能测试教程:快速上手 API 压测
|
3月前
|
JSON JavaScript 测试技术
用Postman玩转电商API:一键测试+自动化请求教程
Postman 是电商 API 测试的高效工具,涵盖基础配置、自动化测试、环境管理与请求自动化,助你快速提升开发效率。
|
1月前
|
人工智能 数据可视化 测试技术
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
351 11
|
4月前
|
Java 测试技术 容器
Jmeter工具使用:HTTP接口性能测试实战
希望这篇文章能够帮助你初步理解如何使用JMeter进行HTTP接口性能测试,有兴趣的话,你可以研究更多关于JMeter的内容。记住,只有理解并掌握了这些工具,你才能充分利用它们发挥其应有的价值。+
816 23
|
6月前
|
数据可视化 测试技术 API
JMeter、Apipost 与 Postman 的 API 测试对比:为什么 APIPost 是更聪明的选择
API测试如同筹备一场晚宴,选对工具至关重要。JMeter功能强大但上手难,适合专业用户;Postman简单易用,但在复杂场景和团队协作中表现有限;而Apipost则是一款智能高效的“厨房神器”。它性能测试轻松、结果清晰、学习门槛低,并且能一键集成CI/CD流程。对于追求效率与便捷的团队而言,Apipost无疑是更优选择,让API测试如同五星大厨烹饪般丝滑流畅。
|
6月前
|
SQL 安全 测试技术
2025接口测试全攻略:高并发、安全防护与六大工具实战指南
本文探讨高并发稳定性验证、安全防护实战及六大工具(Postman、RunnerGo、Apipost、JMeter、SoapUI、Fiddler)选型指南,助力构建未来接口测试体系。接口测试旨在验证数据传输、参数合法性、错误处理能力及性能安全性,其重要性体现在早期发现问题、保障系统稳定和支撑持续集成。常用方法包括功能、性能、安全性及兼容性测试,典型场景涵盖前后端分离开发、第三方服务集成与数据一致性检查。选择合适的工具需综合考虑需求与团队协作等因素。
834 24
|
6月前
|
存储 前端开发 数据可视化
Postman vs. Apifox 用于 API 测试全面对比
寻找一款可靠的 API 测试工具?这份对比分析将深入探讨 Postman 和 Apifox 的功能和特性。了解哪款工具最适合您的 API 测试需求。
|
6月前
|
XML JSON 测试技术
如何使用 Postman 发送和测试 WebSocket
WebSocket 促进客户端和服务器之间通过单个持久连接进行实时、双向通信。 需要使用 Postman 建立 WebSocket 连接吗? 请查看我们简洁的循序渐进指南!
|
6月前
|
监控 安全 测试技术
选择Postman免费版还是付费版,进行 API 测试呢?
深入了解 Postman 免费版和付费版的细节,看看哪一个更适合您的 API 需求。
|
6月前
|
SQL 测试技术
除了postman还有什么接口测试工具
最好还是使用国内的接口测试软件,其实国内替换postman的软件有很多,这里我推荐使用yunedit-post这款接口测试工具来代替postman,因为它除了接口测试功能外,在动态参数的支持、后置处理执行sql语句等支持方面做得比较好。而且还有接口分享功能,可以生成接口文档给团队在线浏览。
261 2

热门文章

最新文章