使用 Idea 自带的
Http-Client
还要从我发现Postman
吃了我 700M 的内存说起
某一天,在我使用着 Postman 熟练的(生疏的) 测试着接口的时候,IDEA 提示我升级到 2020.1,作为一个折腾党,作为一个曾经折腾过 Arch 发行版的男人,我怎么受的了这个提示?升之!看了一下其他博主的推荐,发现原来 IDEA 就自带了一个 Http-Client,2020.1 版本对这个功能进行了优化,推出了新的 Http-Client,相比于 Postman 我还是更喜欢这种类似于代码的方式来测试接口,不多说盘起来。
在使用的过程中,虽然官方的示例已经非常详细,但是由于我对于传参接参、controller
注解的使用、表单数据
和 Json
数据格式还不是很熟悉,所以我觉得还是按照自己的方式梳理一遍。
我认为 Postman 最大的问题是资源占用,700m,可能你会问:”哎呀,都 2020 年了,谁没个 16G、32G 的内存,还在乎这个么“。不好意思,我太在乎这个了。
可以看到打开后它说这玩意不推荐了,麻溜的用我们新的 Http-Client 吧
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RwhEafPh-1593007043462)(https://i.loli.net/2020/06/24/2PzDf4gVZHXUsw6.png)]
这玩意简单的很,官方有详细的示例,可以根据接口直接创建一条测试,也可以通过这里直接定位接口,并且全文本操作,瞬间戳中我的G点。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FW6KGgTq-1593007043464)(https://i.loli.net/2020/06/24/Yt7qpmLkaIhDjGW.png)]
当然工具再怎样还是工具,使用的时候看需求就好,只是我比较喜欢表格里的后者,喜欢前者和熟练使用未必效率就低,学习工具也是需要时间成本的。
Postman | New Http-Client | |
---|---|---|
上手程度 | 易 | 易 |
内存占用 | 700M 左右 | 你用不用,IDEA 都开在那里 |
操作便利 | 要我动鼠标就不是好软件 | 全文本,Nice Baby |
界面 | 除了菜单栏都好看 | IDEA 多好看你说呢 |
文件上传接口测试 | 很方便 | 暂时没成功,看到的小伙伴会的教教我 |
接口管理 | 跟没有一样 | 都是文本还直接与接口关联,很方便 |
对于 Http-Client 的使用,首先要了解的是基础,是用 Get 方法还是 POST 方法,后台需要用什么注解接收,发送请求的请求头对应需要写什么,理解了这些的话,使用 Http-Client 的效率就被大大的提升了。
对于前端传过来的参数类型,一般有三种:
url
的附加参数,例如 localhost/test/1 或者 localhost/test?name=“test”&id=1Content-Type: application/x-www-form-urlencoded
,请求 Body 应当是 name="qwe"&age=123
这种形式Json
格式,请求头是 Content-Type: application/json
,请求 Body 是 {“name”:”test”,”age“:12}对于后端 SpringBoot
框架,常用的参数接收方式有以下几种:
@PathVariable
,一般在使用GET,DELETE,PUT 方法的时候使用请求:
### Http-Client
GET http://{{url}}/testParam/test1/1
Accept: application/json
接收
@GetMapping("/test1/{id}")
public Object test1(@PathVariable("id") int id) {
}
@RequestParam
,一般使用在 PUT,POST,用来获取 表单或url中的
基本数据类型。请求:
###
POST http://{{url}}/testParam/test2
Content-Type: application/x-www-form-urlencoded
page=1&pageSize=2
或---------------------
POST http://{{url}}/testParam/test2?page=1&pageSize=2
接收
@PostMapping("/test2")
public Object test2(@RequestParam("page") int page,
@RequestParam("pageSize") int pageSize) {
}
@RequestBody
,与 @RequestParam
一样,但是他是用来接收 Json
对象的。请求:
###
POST http://{{url}}/testParam/test3
Content-Type: application/json
{"name": "123","age": 123}
接收:
@PostMapping("/test3")
public Object test3(@RequestBody Student student) {
}
Controller
没有注解的情况下,意味着让 SpringBoot 自动去处理字段的映射关系,经过测试,只能使用 url 参数,或者表单的形式传输,并且可以传输对象,SpringBoot 会自动对字段进行映射。 其实基本的用法,在官方的 example
中都有了,只需要动动手,就能掌握参数注解
与 请求方式
的基本使用,另外我发现一些网上的示例是使用 Map
进行参数接收,其实这是我非常不推荐这么做的,刚学编程还是需要养成一些良好的习惯。如果使用 Map
参数,首先编程上来说是非常爽的,一条路走到黑可以直接传到 Mybatis 的 XML 文件中,传参可以直接变成查询条件,但是维护的人哪怕是你,能一眼看出这个接口需要什么参数吗?如果使用 Map 传参,SpringBoot
自带的 参数校验
你也没法使用了,API 工具
也没法使用了,你得手动写接口文档,你得手动进行参数的有效性校验,孰好孰坏,各位自有定论,反正我是不喜欢用 Map 传参。最后:Map传参一时爽,维护时候火葬场!慎用!
入门小白,才学疏浅,若有疏漏,欢迎指出。
本文首次更新时间 2020-04-30
本文最后更新时间 2020-06-24 (若有突破,持续更新,转载请注明出处)2020-06-24 更新内容:新增了跟 Postman 和 New Http -Clien 的对比,新增一些截图,方便没使用过 Http-Client 的同学有一个直观的印象
基于Halo 搭建的个人博客:https://undivided.top
不太想用但是流量很 HI 多的 CSDN
我的简书