详解IntelliJ IDEA 自带的 HTTP Client 接口调用插件吊打 Postman

作者:陈皮的JavaLib 时间:2023-08-06 07:56:08 

Java公众号【Java技术迷】一个在互联网领先地位,微信搜索【Java技术迷】第一时间阅读最新文章,通过下面下载链接,即可获得我精心整理的技术资料,电子书籍,一线大厂面试资料和优秀简历模板。

http://xiazai.jb51.net/202105/yuanma/javadzsh_jb51.rar

1 前言

当我们在开发调试 Web 服务的时候,需要对接口进行调用测试;或者对接第三方系统时,需要调用远程第三方的接口进行联调。这时,相信大家首选的工具一般会是 Postman ,一款当今比较流行而且功能齐全的接口调用调试工具。如下所示:

详解IntelliJ IDEA 自带的 HTTP Client 接口调用插件吊打 Postman

不过我们一般使用 IntelliJ IDEA 代码编辑器来开发和调试 Web 服务,如果使用 Postman 工具来测试接口,不仅要在电脑上安装 Postman ,还需要在不同工具之间切换,比较麻烦。幸运地的是 IDEA 自带了一款简洁轻量级的接口调用插件,HTTP Client

详解IntelliJ IDEA 自带的 HTTP Client 接口调用插件吊打 Postman

2 HTTP Client

HTTP Client 是 IDEA 自带的一款简洁轻量级的接口调用插件,通过它,我们能在 IDEA 上开发,调试,测试 RESTful Web 服务

注意:确保 HTTP Client 插件是安装启动的,默认是已安装启动的。若没有安装,在 File - Settings - Plugins 路径下进行安装,如下:

详解IntelliJ IDEA 自带的 HTTP Client 接口调用插件吊打 Postman

2.1 创建 HTTP Client 文件

可以创建2种文件类型的 HTTP Client 文件,一种是临时文件(scratch files,不跟项目工程挂钩),一种是非临时文件(physical files,跟项目工程挂钩)。

如果你想创建的 HTTP Client 文件是为了临时调用接口测试用的,不需要保留记录供以后使用,则可以使用临时文件;如果想存档记录请求参数,请求结果等,后续再继续使用,或者随项目提交到远程git仓库,则建议使用非临时文件。

创建 HTTP Client 临时文件

详解IntelliJ IDEA 自带的 HTTP Client 接口调用插件吊打 Postman

打开后,显示界面和Postman差不多,不过这种风格的界面被弃用了,官方不推荐我们使用,在最新版本的 IDEA 中已经没有这个界面了。

详解IntelliJ IDEA 自带的 HTTP Client 接口调用插件吊打 Postman

官方推荐我们使用编码式的风格界面,点击上个界面顶部的 Convert request to the new format ,即可打开新的 HTTP Client 界面。

详解IntelliJ IDEA 自带的 HTTP Client 接口调用插件吊打 Postman

创建 HTTP Client 非临时文件

可以在项目根目录下创建一个存储请求文件的文件夹,然后在里面创建 HTTP Client 请求文件,如下:

详解IntelliJ IDEA 自带的 HTTP Client 接口调用插件吊打 Postman

2.2 HTTP Client 特性

HTTP 请求存储在以.http.rest为后缀的文件中,并且带有 API 小图标。

详解IntelliJ IDEA 自带的 HTTP Client 接口调用插件吊打 Postman

请求文件可以包含多个请求,多个请求中间用3个井号 ### 隔开;如果是临时文件,每次执行请求后,会在请求下方生成对应请求结果的文件链接,按住 Ctrl + 鼠标左键可以打开。

详解IntelliJ IDEA 自带的 HTTP Client 接口调用插件吊打 Postman

所有的请求结果,请求历史记录,cookies等信息会存放在 .idea 文件夹下,如下:

详解IntelliJ IDEA 自带的 HTTP Client 接口调用插件吊打 Postman

2.3 如何创建请求


使用右上角的快捷按钮创建请求,可以选择不同方式的请求,如下:

详解IntelliJ IDEA 自带的 HTTP Client 接口调用插件吊打 Postman

使用快捷键进行创建请求,例如输入 gtr 可以快速创建一个简单的 GET 请求,如下:

详解IntelliJ IDEA 自带的 HTTP Client 接口调用插件吊打 Postman

使用 Ctrl + J 快捷键可以查看创建 HTTP 请求的所有快捷键,如下:

详解IntelliJ IDEA 自带的 HTTP Client 接口调用插件吊打 Postman

通过 cURL 创建请求,点击右上角的 Convert form cURL 按钮,然后输入 cURL 地址即可自动转换,如下:

详解IntelliJ IDEA 自带的 HTTP Client 接口调用插件吊打 Postman
详解IntelliJ IDEA 自带的 HTTP Client 接口调用插件吊打 Postman

2.4 请求方式

GET


### GET request with a header
GET https://httpbin.org/ip
Accept: application/json

### GET request with parameter
GET https://httpbin.org/get?show_env=1
Accept: application/json

### GET request with environment variables
GET {{host}}/get?show_env={{show_env}}
Accept: application/json

### GET request with disabled redirects
# @no-redirect
GET http://httpbin.org/status/301

### GET request with dynamic variables
GET http://httpbin.org/anything?id={{$uuid}}&ts={{$timestamp}}

###

POST


### Send POST request with json body
POST https://httpbin.org/post
Content-Type: application/json

{
 "id": 999,
 "value": "content"
}

### Send POST request with body as parameters
POST https://httpbin.org/post
Content-Type: application/x-www-form-urlencoded

id=999&value=content

### Send a form with the text and file fields
POST https://httpbin.org/post
Content-Type: multipart/form-data; boundary=WebAppBoundary

--WebAppBoundary
Content-Disposition: form-data; name="element-name"
Content-Type: text/plain

Name
--WebAppBoundary
Content-Disposition: form-data; name="data"; filename="data.json"
Content-Type: application/json

< ./request-form-data.json
--WebAppBoundary--

### Send request with dynamic variables in request's body
POST https://httpbin.org/post
Content-Type: application/json

{
 "id": {{$uuid}},
 "price": {{$randomInt}},
 "ts": {{$timestamp}},
 "value": "content"
}

###

PUT


PUT http://localhost:8080/person/put
Content-Type: application/json

{"name": "陈皮","age": 17}

PATCH


###
PATCH http://localhost:8080/person/put
Content-Type: application/json

{"name": "陈皮","age": 17}

鉴权方式


### Basic authorization.
GET https://httpbin.org/basic-auth/user/passwd
Authorization: Basic user passwd

### Basic authorization with variables.
GET https://httpbin.org/basic-auth/user/passwd
Authorization: Basic {{username}} {{password}}

### Digest authorization.
GET https://httpbin.org/digest-auth/realm/user/passwd
Authorization: Digest user passwd

### Digest authorization with variables.
GET https://httpbin.org/digest-auth/realm/user/passwd
Authorization: Digest {{username}} {{password}}

### Authorization by token, part 1. Retrieve and save token.
POST https://httpbin.org/post
Content-Type: application/json

{
 "token": "my-secret-token"
}

> {% client.global.set("auth_token", response.body.json.token); %}

### Authorization by token, part 2. Use token to authorize.
GET https://httpbin.org/headers
Authorization: Bearer {{auth_token}}

###

断言方式


### Successful test: check response status is 200
GET https://httpbin.org/status/200

> {%
client.test("Request executed successfully", function() {
 client.assert(response.status === 200, "Response status is not 200");
});
%}

### Failed test: check response status is 200
GET https://httpbin.org/status/404

> {%
client.test("Request executed successfully", function() {
 client.assert(response.status === 200, "Response status is not 200");
});
%}

### Check response status and content-type
GET https://httpbin.org/get

> {%
client.test("Request executed successfully", function() {
 client.assert(response.status === 200, "Response status is not 200");
});

client.test("Response content-type is json", function() {
 var type = response.contentType.mimeType;
 client.assert(type === "application/json", "Expected 'application/json' but received '" + type + "'");
});
%}

### Check response body
GET https://httpbin.org/get

> {%
client.test("Headers option exists", function() {
 client.assert(response.body.hasOwnProperty("headers"), "Cannot find 'headers' option in response");
});
%}

###

来源:https://blog.csdn.net/chenlixiao007/article/details/116425259

标签:idea,HTTP,Client,插件,Postman
0
投稿

猜你喜欢

  • c#开发word批量转pdf源码分享

    2022-01-12 07:37:29
  • Android Handler,Message,MessageQueue,Loper源码解析详解

    2022-04-17 17:34:57
  • 基于XML配置Spring的自动装配过程解析

    2023-02-28 00:42:12
  • 分析Java中的类加载问题

    2023-09-03 19:37:04
  • 20个非常实用的Java程序代码片段

    2022-02-08 10:35:44
  • JAVA 生成随机数并根据后台概率灵活生成的实例代码

    2023-12-05 11:00:48
  • 基于Apache组件分析对象池原理的实现案例分析

    2023-11-05 16:55:57
  • Flutter 自定义Drawer 滑出位置的大小实例代码详解

    2021-09-18 23:18:19
  • java数据库唯一id生成工具类

    2023-04-04 22:53:34
  • C#里SuperSocket库不能发现命令的原因

    2023-05-20 20:19:37
  • C# string格式的日期时间字符串转为DateTime类型的方法

    2022-04-07 09:34:30
  • Struts2实现多文件上传功能

    2021-11-01 13:50:25
  • C#字符串使用密钥进行加解密

    2023-12-27 19:10:17
  • Hibernate5新特性介绍

    2023-01-02 16:28:09
  • XRecyclerView实现下拉刷新、滚动到底部加载更多等功能

    2023-11-07 06:40:55
  • Android Binder的原理与使用

    2023-04-06 04:08:49
  • 一文带你吃透JSP增删改查实战案例详细解读

    2021-08-17 17:10:22
  • Android 中TextView中跑马灯效果的实现方法

    2023-08-07 01:39:46
  • Android 个人理财工具四:添加账单页面 下

    2021-09-05 00:43:59
  • Android编程处理窗口控件大小,形状,像素等UI元素工具类

    2022-04-06 04:47:53
  • asp之家 软件编程 m.aspxhome.com