使用 Idea 自带的 Http-Client🌐 测试接口

1,333 阅读3分钟

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

​ 某一天,在我使用着 Postman 熟练的(生疏的) 测试着接口的时候,IDEA 提示我升级到 2020.1,作为一个折腾党,作为一个曾经折腾过 Arch 发行版的男人,我怎么受的了这个提示?升之,当天晚上就看到了 B 站程序员Up 主 程序羊 推了一个介绍 2020.1 新特性的视频🖱️,发现原来 IDEA 就自带了一个 Http-Client,2020.1 版本还对这个功能进行了优化,相比于 Postman 我还是更喜欢这种类似于代码的方式来测试接口,不多说盘起来。

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

示例

对于 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-04-30 (若有突破,持续更新,转载请注明出处)

基于Halo 搭建的个人博客:https://undivided.top 不太想用但是流量很 HI 多的 CSDN 我的简书