使用 IDEA2020 自带的 New Http-Client 测试接口

使用 Idea 自带的 Http-Client 还要从我发现 Postman 吃了我 700M 的内存说起

​ 某一天,在我使用着 Postman 熟练的(生疏的) 测试着接口的时候,IDEA 提示我升级到 2020.1,作为一个折腾党,作为一个曾经折腾过 Arch 发行版的男人,我怎么受的了这个提示?升之!看了一下其他博主的推荐,发现原来 IDEA 就自带了一个 Http-Client,2020.1 版本对这个功能进行了优化,推出了新的 Http-Client,相比于 Postman 我还是更喜欢这种类似于代码的方式来测试接口,不多说盘起来。

​ 在使用的过程中,虽然官方的示例已经非常详细,但是由于我对于传参接参、controller注解的使用、表单数据Json 数据格式还不是很熟悉,所以我觉得还是按照自己的方式梳理一遍。


一 常用的接口测试工具

1. Postman:我们最常用的接口测试工具

我认为 Postman 最大的问题是资源占用,700m,可能你会问:”哎呀,都 2020 年了,谁没个 16G、32G 的内存,还在乎这个么“。不好意思,我太在乎这个了。

使用 IDEA2020 自带的 New Http-Client 测试接口_第1张图片


2. IDEA 自带的 Http-Client,我没用过,也不知道它好不好用

可以看到打开后它说这玩意不推荐了,麻溜的用我们新的 Http-Client 吧

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RwhEafPh-1593007043462)(https://i.loli.net/2020/06/24/2PzDf4gVZHXUsw6.png)]


3. IDEA2020.1 New Http-Client(推荐)

这玩意简单的很,官方有详细的示例,可以根据接口直接创建一条测试,也可以通过这里直接定位接口,并且全文本操作,瞬间戳中我的G点。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FW6KGgTq-1593007043464)(https://i.loli.net/2020/06/24/Yt7qpmLkaIhDjGW.png)]


二 Postman 和 New Http-Client 对比 (主观对比)

当然工具再怎样还是工具,使用的时候看需求就好,只是我比较喜欢表格里的后者,喜欢前者和熟练使用未必效率就低,学习工具也是需要时间成本的。

Postman New Http-Client
上手程度
内存占用 700M 左右 你用不用,IDEA 都开在那里
操作便利 要我动鼠标就不是好软件 全文本,Nice Baby
界面 除了菜单栏都好看 IDEA 多好看你说呢
文件上传接口测试 很方便 暂时没成功,看到的小伙伴会的教教我
接口管理 跟没有一样 都是文本还直接与接口关联,很方便

三 New Http-Client示例

对于 Http-Client 的使用,首先要了解的是基础,是用 Get 方法还是 POST 方法,后台需要用什么注解接收,发送请求的请求头对应需要写什么,理解了这些的话,使用 Http-Client 的效率就被大大的提升了。

对于前端传过来的参数类型,一般有三种:

  • url 的附加参数,例如 localhost/test/1 或者 localhost/test?name=“test”&id=1
  • 表单数据,请求头是 Content-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
我的简书

你可能感兴趣的:(使用 IDEA2020 自带的 New Http-Client 测试接口)