前言

只有光头才能变强。

文本已收录至我的GitHub精选文章,欢迎Starhttps://github.com/ZhongFuCheng3y/3y

相信大家都用过POSTMAN吧,后端在开发的时候写完接口总得去自测调用一下,看符不符合自己的预期。

因为我们的接口可能会有很多参数或者我们的参数是json格式的(等等原因),直接用浏览器去请求不太方便,而且使用浏览器去请求也不能复用(没有保存的功能)。

所以我们常常会用一些别的软件(插件),而POSTMAN就是这里边最出名的。

这篇文章不是在介绍POSTMAN,而是我们Java程序员最喜欢的IDEA,它也能做到POSTMAN的功能,而且我觉得更加好用(见仁见智,勿喷)。

小插曲

在前几天换了MacBookPro,自然就需要把在Windows上的hosts配置的东西搬移到MacBookPro上

毕业半年,买了一台MacBook Pro

于是我就把Windows上的hosts通过QQ复制到我的gas mask(Mac 上管理hosts的一个软件,我觉得挺好用的)

于是我就很欢快愉悦地就将这些配置复制到gas mask。复制完了以后,我去访问自己的预发环境也是成功了(我这边一般预发环境都要配置hosts才能访问)。

但是等我用POSTMAN和IDEA自带的HTTP Clint去测试我自己接口的时候,一直都404了,我非常不明白为什么404

  • 明明我自己的机器从浏览器直接访问预发环境是没问题的啊
  • 我将相同的URL放在Windows上是可以访问的,放在Mac上就访问不了
  • 好奇怪啊....

于是我就喊来了我的小伙伴帮我看看什么情况(我没遇到过这种问题),小伙伴也给我分析起来了(搞着搞着就一群小伙伴都围着我看这问题了)

  1. 检查一下我的gas mask配置有没有问题----没看出有问题
  2. 检查一下我的绑定有没有相同的域名----没看出有问题
  3. 检查一下本机的hosts文件有没有问题(注:我这里是在图文上看的。快捷键:option+command+空格,然后command+shift+g,输入/etc/hosts查看文件----没看出有问题
  4. ping一下域名----发现能ping通,但不是我绑定的ip
  5. 怀疑DNS污染,去搜了几条命令刷新DNS----无果
  6. 此时有个声音:“是不是你的hosts文件有特殊的字符啊?“,我熟练地在iTerm2输入sudo vim /etc/hosts,一看,好多的特殊字符。----问题解决,复制的时候存在特殊字符。哎哟。

简单介绍HTTP Client

注:环境:IDEA 2019.3

上面也讲到了,IDEA已经自带了类似POSTMAN的工具给我们使用了,如果它足够好用,我就不用去下载POSTMAN了。

首先,我们来找到它的入口:

Tools->HTTP Client->Test RESTful Web Service,不会很难找

点开以后我们可以在底部发现REST Client

从界面上的小字,我们可以看出:IDEA是不推荐我们使用REST Client了,不妨让我们去使用new HTTP Client。从REST Client的风格我们可以看出跟POSTMAN没什么大的区别(从功能上长得差不多)

点击蓝字,我们跳到IDEA推荐用的new HTTP Client,可以发现这个界面:

我对这种用写的方式还是挺喜欢的(个人)。我们尝试一下右边的几个链接就可以快速入门

首先是Add Request,从英文上我们已经可以得出这是增加一个常见的请求模板(供你选择)

我们随便点一个试试,看一下是怎么样的:

然后我们可以点击Examples链接,看一下它的功能:

我们可以查看到各种的示例,非常方便我们去入门:

更好用的是,我们可以定义变量(不同的环境使用不同的变量),我们可以定义http-client.env.json,里边写一些通用变量相关的值。然后我们在.http文件下就可以引用:

//http-client.env.json 样式
{
"dev": {
"baseUrl": "http://gateway.xxx.cn/",
"username": "",
"password": ""
},
"pre": {
"baseUrl": "http://localhsot:8888/",
"username": "",
"password": ""
}
}

.http文件中使用{{condition}}就可以引用到我们公用的环境变量了:

GET {{baseUrl}}/api/item?id=99
Accept: application/json

在执行的时候我们就可以选择不同的环境执行:

最后

我们可以发现的是,IDEA给我们以文件的方式就能构建自己的接口,这说明我们可以将文件上传到Git上,方便多人协作。

可以通过配置来帮我们快速切换对应的环境(变量),只要写一次的请求体,就可以用作于多个环境。

通过官方给的Examples我们也可以快速去了解如何使用,没有什么学习成本。

还有一些高级的功能....我就不说了(因为我也不懂),大家可以有兴趣可以去看一下。

参考资料:

当我写下这篇文章的时候,敖丙和鸡蛋都说:”POSTMAN才是世界上最好用的工具,三歪没有格局。等他发文章的时候我要举报他

注:我不是一个深度使用POSTMAN的人,现在HTTP Client对我来说已经足够使用了。

本已收录至我的GitHub精选文章,欢迎Starhttps://github.com/ZhongFuCheng3y/3y

乐于输出干货的Java技术公众号:Java3y。公众号内有300多篇原创技术文章、海量视频资源、精美脑图,关注即可获取!

非常感谢人才们能看到这里,如果这个文章写得还不错,觉得「三歪」我有点东西的话 求点赞 求关注️ 求分享

简单使用一下IDEA 的HTTP Client的更多相关文章

  1. Android简单的聊天室开发(client与server沟通)

    请尊重他人的劳动成果.转载请注明出处:Android开发之简单的聊天室(client与server进行通信) 1. 预备知识:Tcp/IP协议与Socket TCP/IP 是Transmission ...

  2. Android简单实现Socket通信,client连接server后,server向client发送文字数据

    案例实现的是简单的Socket通信,当client(Androidclient)连接到指定server以后,server向client发送一句话文字信息(你能够拓展其他的了) 先看一下服务端程序的实现 ...

  3. [笨木头FireFly01]入门篇1·最简单的服务端和客户端连接

    原地址:http://www.9miao.com/question-15-53938.html 最近一直在写游戏,几乎没有来写教程了,打算放慢一下脚步,学学新东西.那为嘛我要学FireFly呢? 之前 ...

  4. Orleans简单配置

    Orleans简单配置 这是Orleans系列文章中的一篇.首篇文章在此 话说曾几何时,我第一次看到xml文件,心中闪过一念想:"这<>是什么鬼?"-用ini或者jso ...

  5. Java: server/client 心跳机制实现 示例

    心跳机制 心跳机制是定时发送一个自定义的结构体(心跳包),让对方知道自己还活着,以确保连接的有效性的机制. 大部分CS的应用需要心跳机制.心跳机制一般在Server和Client都要实现,两者实现原理 ...

  6. redis的事务(简单介绍)

    1.简单描述 redis对事务的支持目前还是比较简单.redis只能保证一个client发起的事务中的命令是可以连续的执行,而中间不会插入其他client的命令.由于redis是但现场来处理所有cli ...

  7. Mysql 5.7 Windows 版本(zip)的安装简单过程

    1. 下载zip包 https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.25-winx64.zip 2. 找一个目录解压缩 3. 简单进行安装: ...

  8. Python Thrift 简单示例

    本文基于Thrift-0.10,使用Python实现服务器端,使用Java实现客户端,演示了Thrift RPC调用示例.Java客户端提供两个字符串参数,Python服务器端计算这两个字符串的相似度 ...

  9. 设计模式之策略模式&amp;简单工厂模式

    学习设计模式已经有非常长一段时间了,事实上先前已经敲过一遍了.可是老认为没有学到什么,认识也不够深刻.如今趁着重构机房,再又一次来过,也不晚. 事实上在敲了机房之后,看看模式,事实上,曾经非常难理解. ...

随机推荐

  1. oracle插入,更新,删除数据

    插入,更新,删除数据 oracle提供了功能丰富的数据库管理语句 包括有效的向数据库中插入数据的insert语句 更新数据的update语句 以及当数据不再使用时删除数据的delete语句 更改数据之 ...

  2. EasyCode实现数据库到Swagger全自动化

    简介 EasyCode是基于IntelliJ IDEA开发的代码生成插件,通过自定义生成模板可以完成定制化的 Mapper Service Controller 生成,结合数据库 Comment还可以 ...

  3. warning: rpmts_HdrFromFdno: Header V4 DSA/SHA1 Signature, key ID XXXXXX: NOKEY

    我在使用Centos时,会出现这种错误: 本人实践有效的办法是: 加上"--nogpgcheck"参数 就是在你要执行的语句后面加上该参数就行了! 我当时是为了安装jenkins时 ...

  4. Centos 6.x Openssh 升级 7.7p1 版本

    OpenSSH 升级 目前在一家金融公司上班,正好赶上金融公司各种暴雷,本人心里慌慌的. 然后就是金融公司要进行的最低的三级等保评测,各种修改系统安全,密码强度.WAF.防火墙等各种. 评测公司对我司 ...

  5. Codeforces Round #452 (Div. 2) A B C

    Codeforces Round #452 (Div. 2) A Splitting in Teams 题目链接: http://codeforces.com/contest/899/problem/ ...

  6. Forrester:华为云容器是容器混合云最佳选择

    近日,国际权威咨询机构Forrester发布<The Forrester New WaveTM: Public Cloud Enterprise Container Platforms, Q3 ...

  7. CAS都不了解,你还怎么看J.U.C

    前言 说到CAS(CompareAndSwap),不得不先说一说悲观锁和乐观锁,因为CAS是乐观锁思想的一种实现. 悲观锁:总是很悲观的认为,每次拿数据都会有其他线程并发执行,所以每次都会进行加锁,用 ...

  8. 如何用vue-cli3脚手架搭建一个基于ts的基础脚手架

    目录 准备工作 搭建项目 vue 中 ts 语法 项目代理及 webpack 性能优化 其他 忙里偷闲,整理了一下关于如何借助 vue-cli3 搭建 ts + 装饰器 的脚手架,并如何自定义 web ...

  9. Vue全家桶高仿小米商城

    大家好,我是河畔一角,时隔半年再次给大家带来一门重量级的实战课程:<Vue全家桶高仿小米商城>,现在很多公司都在参与到商城的构建体系当中,因此掌握一套商城的标准开发体系非常重要:商城的开始 ...

  10. react-native 相对项目路径导入组件 ___ babel-plugin-root-import

    在使用react-native的时候,经常要自定义很多组件,但是只能使用../../../的方式,经常不记得这是多深,有没有一个插件,能自动帮我们解决这样的问题? 使用指南 我们使用的目标要达到以下的 ...