Idea自带的http client工具使用攻略

2023-11-16

平时都是用postman来调接口,有时候也会用到swagger。用swagger还可以,直接在浏览器上开个页面即可,但是postman就不行了,需要单独的运行,个人感觉postman还是比较占内存的。最近和一个其他组同事联调,发现他们使用的是idea自带的HTTP Client工具,感觉挺好用的,调接口不需要切浏览器,切应用。直接在idea中可以完成。挺酷(zhuang)炫(bi)的,所以准备学习一下,在网上也找到了这方面的很多文章,在研究的时候都有借鉴,多谢各位爱分享的博友们。

界面化调试

界面化操作很简单,都是类似postman等其他发送请求的客户端工具,这里就不具体介绍使用规则啦。

打开入口:工具栏(idea顶上的一行工具里面)->Tools->HTTP Client

文件形式调试

在文件里面编写请求所需要的地址、参数、请求头等信息,还可以通过全局变量来设置共用的信息。既然是使用idea,可以使用快捷键是必须滴。下面来一一的介绍。

首先需要创建一个编写http请求信息的文件,可以在resources目录下建一个目录http右击http->New->HTTP Request,输入文件名称即可创建文件。具体这个文件放在什么地方没有特殊的要求,但是个人习惯方在resources目录下,再有个http目录便于管理,下面也基于这个目录来说。建好的文件名是httpClient.http

创建文件成功后,文件上面会有几行注释,这几行注释不多做解释,自己翻译一下即可。里面有快捷键的说明,下面我会再具体使用的时候说明。

附文件初始注释说明信息:

# For a quick start check out our HTTP Requests collection (Tools|HTTP Client|Open HTTP Requests Collection).
#
# Following HTTP Request Live Templates are available:
# * 'gtrp' and 'gtr' create a GET request with or without query parameters;
# * 'ptr' and 'ptrp' create a POST request with a simple or parameter-like body;
# * 'mptr' and 'fptr' create a POST request to submit a form with a text or file field (multipart/form-data);
POST请求之JSON数据
  • 接口代码:
@PostMapping("addArticle")
@ResponseBody
public String addArticle(@RequestBody ArticleReqDTO reqDTO) {
    log.info("Execute ArticleController.addArticle,reqDTO=【{}】", reqDTO);
    return "add success";
}
  • httpClient.http内代码:
### 第一行:POST请求,请求地址
### 第二行:请求头信息,多个请求头信息依次写下去(第三行、第四行……)
### 第N行:写具体的请求体,这里是JSON串,请求头和请求体之间要空出一行
POST http://localhost:8282/api/addArticle
Content-Type: application/json

{
    "title":"文章标题",
    "abst":"文章摘要",
    "categoryId":1,
    "authorName":"IT-CRUD"
}

书写是很简单的,httpClient.http编写也不难,细节注意点就可以。

快捷键ptr,输入会有提示,直接回车即可。

POST请求之FORM表单
  • 接口代码:
@PostMapping(value = "updateArticle_form", produces = MediaType.APPLICATION_FORM_URLENCODED_VALUE) //指定请求数据格式是form表单
@ResponseBody
public String updateArticle_form(@ModelAttribute ArticleReqDTO reqDTO) {
    log.info("Execute ArticleController.updateArticle_form,reqDTO=【{}】", reqDTO);
    return "update success";
}
  • httpClient.http内代码:
### 修改文章(form表单提交)
POST http://localhost:8282/api/updateArticle_form
Content-Type: application/x-www-form-urlencoded

id=1&title=文章标题&abst=文章摘要&categoryId=1&authorName=IT-CRUD

这个具体的说明就没写了,基本都是相同的格式,参考上一个示例,但是这里需要注意的是字段名和字段值不能加引号。如"id"=1&"title"="文章标题",这样会报错的。生成此结构使用快捷键ptrp

另外一个注意点: 每个请求后面都要加###结束,换句话说,就是两个请求之间用###分隔,否则会直接报错。

GET请求
  • 接口代码:
@GetMapping("getList")
@ResponseBody
public List<ArticleVO> getList(@RequestParam("keywords") String keywords
        , @RequestParam("categoryId") Integer categoryId) {
    log.info("Execute ArticleController.updateArticle_form,keywords=【{}】,categoryId=【{}】", keywords, categoryId);
    List<ArticleVO> vos = Lists.newArrayList();
    vos.add(ArticleVO.builder().abst("这是个摘要--1").authorName("IT-CRUD")
            .categoryId(1).categoryName("Spring").createTime(new Date()).title("这是一个标题--1")
            .build());
    vos.add(ArticleVO.builder().abst("这是个摘要--2").authorName("IT-CRUD")
            .categoryId(1).categoryName("Spring").createTime(new Date()).title("这是一个标题--2")
            .build());
    vos.add(ArticleVO.builder().abst("这是个摘要--3").authorName("IT-CRUD")
            .categoryId(1).categoryName("Spring").createTime(new Date()).title("这是一个标题--3")
            .build());
    return vos;
}
  • httpClient.http内代码:
### 查询文章列表
GET http://localhost:8282/api/getList?keywords=标题&categoryId=1
Accept: application/json

GET请求和POST请求一样,也是有两个快捷键,分别是gtrgtrp,第一个是生成无参数的模板,第二个是生成有参数。区别就是第二种会在请求地址后面加上?id=xx这种参数。

全局变量配置

常用的几种请求方式上面已经清楚啦,下面来看一下全局变量配置。这个全局的变量和spring的配置文件是完全分开的,没有关联。

配置文件的名称和内容格式都有特殊要求,名称必须是rest-client.env.json或者http-client.env.json

配置文件格式:

{
  "dev":{
    "host":"http://localhost:8282"
    ## 其他属性 ……
  },
  "st":{
    "host":"http://cs.itcrud.com"
    ## 其他属性 ……
  }
}

格式不多说,官方规定,就如同spring的yml配置文件,就要按照它的来,没商量。

从json串可以看出这里可以配置多个环境,这个就很方便啦。在使用postman的时候就会有环境地址切换的问题,本地、测试等环境来回切换地址很头疼,如果直接配置两套,又感觉很傻。如果使用idea的这个http client就方便,提前配好,一劳永逸。

具体怎么使用呢?很简单,在httpClient.http文件里面修改如下:

# 修改前
GET http://localhost:8282/api/getList?keywords=标题&categoryId=1
# 修改后,这个host就指向配置文件中的host对应的值
GET {{host}}/api/getList?keywords=标题&categoryId=1

httpClient.http文件中每个请求前面都有个绿色的三角形(运行按钮),可以直接点击运行,点击后会提示你选择哪个环境的配置运行。如图:

在这里插入图片描述

总结

整体基本写完啦,但是细心的可能会注意到还有两个快捷键没有介绍,那就是mptrfptr,都是文件上传的快捷键,具体待研究,尝试了一次没有弄好,请求是通的,但是接口接受文件的对象是空。(研究完后期会在这篇文章里面更新)

另外还有一个挺酷的功能,可以自己写脚本,对执行的结果进行处理,如响应是500,控制台应该显示什么信息;还可以根据响应的值给予特殊的处理等。自动义脚本功能感觉用不上,就没有多去研究,脚本看起来并不是很难,如果你很感兴趣可以研究一下官方文档。

官方文档:https://www.jetbrains.com/help/idea/http-client-in-product-code-editor.html

Source Code

码云(gitee):https://gitee.com/itcrud/itcrud-note/tree/master/itcrud-note-1-2

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Idea自带的http client工具使用攻略 的相关文章

  • 我该如何解决? KnapSack - 值完全相同,但每个对象都有三个权重

    我在解决我的练习时遇到问题 我读到了动态规划和算法 我认为我的练习是 特定背包问题 我用暴力法解决了它 但我无法用动态规划解决它 我有一艘重300吨的船 背包 有些晶体本身含有 3 种物质 X Y Z 每种物质都有重量 并且所有晶体都具有相
  • 运行单个 Java 线程的双核 CPU 利用率[重复]

    这个问题在这里已经有答案了 可能的重复 多线程 Java 应用程序能否很好地利用多核机器 https stackoverflow com questions 1649402 would a multithreaded java applic
  • 术语“引用”的起源,如“通过引用传递”

    Java C 语言律师喜欢说他们的语言按值传递引用 这意味着 引用 是调用函数时复制的对象指针 同时 在 C 中 以及 Perl 和 PHP 中更动态的形式 引用是其他名称 或动态情况下的运行时值 的别名 我对这里的词源感兴趣 参考 一词的
  • 使用 google-api-java-client 的 2 足 OAuth

    有谁知道如何将 2 legged OAuth 与 google api java client 一起使用 我正在尝试访问 Google Apps 配置 API 以获取特定域的用户列表 以下不起作用 HttpTransport transpo
  • 具有最小刻度的图表的漂亮标签算法

    我需要手动计算图表的刻度标签和刻度范围 我知道漂亮刻度的 标准 算法 参见 我也知道这个Java实现 http erison blogspot nl 2011 07 algorithm for optimal scaling on char
  • Maven 2 未运行 Junit 4 测试

    我在确保运行 Junit4 测试时遇到问题 同样的问题也被报告在https stackoverflow com questions 2021771 sort newest sort top https stackoverflow com q
  • Java 相当于 Perl 的 s/// 运算符?

    我有一些代码正在从 Perl 转换为 Java 它大量使用了正则表达式 包括s 操作员 我已经使用 Perl 很长时间了 但仍然习惯 Java 的做事方式 特别是 字符串似乎更难使用 有谁知道或有一个完全实现的Java函数s 这样它就可以处
  • IntelliJ Idea 无法与 svn 更新一起正常工作

    在 IntelliJ Idea Community 版本中进行 svn 更新或比较操作时 我不断遇到相同的错误 svn E175002 Received fatal alert unexpected message svn E175002
  • 将 RequestBody json 转换为对象 - Spring Boot

    我是 java 开发的初学者 但之前有 PHP 和 Python 等编程语言的经验 对于如何进行 Spring Boot 的开发几乎没有什么困惑 我正在开发一个rest API 它有以下请求 key value key1 value1 pl
  • 当查看 X-Auth-Token 与 Authorization 标头之间的差异时,哪个是首选?

    下面两个标题有什么区别 哪一个是首选 X Auth Token dadas123sad12 Authorization Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ Authorization是客户端使用的主要标头认证如
  • 属性文件中的字符串主机名:Java

    这听起来可能是一个非常简单的问题 但我无法找到解决方法 我有一个 config properties 文件 其中包含两个键值 IP 地址和端口号 我读取此配置文件以提取字符串格式的键值 但是 当我尝试使用这些值时 我无法连接到从配置文件中检
  • 如何找到 Oracle 数据库的 URL?

    如何找到 Oracle 数据库的 URL 和端口 Example jdbc oracle thin host port dbName 用户名 密码 是否有我可以查看的 SQL 命令或日志 配置文件 对于甲骨文来说 有一个tnsnames o
  • Java XML 解析器添加不必要的 xmlns 和 xml:space 属性

    我在 Windows 10 上使用 Java 11 AdoptOpenJDK 11 0 5 2019 10 15 我正在解析一些旧版 XHTML 1 1 文件 这些文件采用以下一般形式
  • 通过 ssh 发送命令并读取输出结果

    我有代码通过 ssh 连接到远程服务器并向其发送 2 个或更多命令 例如 cd export home ops bin和 viewlinkload time 20131205 19 但我没有看到命令执行 也没有收到结果 我需要获取服务器返回
  • Java“非法访问操作”方法将被弃用? [复制]

    这个问题在这里已经有答案了 JDK 9 JVM 发出非法访问操作警告后 如果您使用一些非法访问 例如setAccessible 我的问题 Is setAccessible 以后会被封吗 此功能的官方参考 如果将被弃用 在哪里 我在任何地方都
  • 文档过滤器在 Java 中不起作用?

    在超过 10 个字符的文本字段中 它必须显示错误 为此 我使用了文档过滤器 JTextField field JTextField txtFld AbstractDocument document AbstractDocument fiel
  • 从数字列表中生成所有唯一对,n 选择 2

    我有一个元素列表 假设是整数 我需要进行所有可能的两对比较 我的方法是 O n 2 我想知道是否有更快的方法 这是我在java中的实现 public class Pair public int x y public Pair int x i
  • 在java中打印阿拉伯字符串

    我试图在 java 中显示阿拉伯语文本 但它显示垃圾字符 示例 或有时在我打印时仅显示问号 我如何才能打印阿拉伯语 我听说它与unicode和UTF 8有关 这是我第一次使用语言 所以不知道 我正在使用 Eclipse Indigo IDE
  • Node.js 上的 Connect 出现“无法 GET /”

    我正在尝试使用以下方式开始提供一些静态网页connect像这样 var connect require connect var nowjs require now var io require socket io var app conne
  • 在没有 ODBC 的情况下从 Java 操作 Access 数据库

    我想从我的 Java 项目操作 Microsoft Access 数据库 accdb 或 mdb 文件 我不想使用 Microsoft 的 JDBC ODBC Bridge 和 Access ODBC 驱动程序 因为 JDBC ODBC 桥

随机推荐

  • 手把手教你如何快速搭建个人博客

    之前有录制和编写过WordPress搭建个人博客的内容 但是都比较麻烦 需要在控制台黑框复制运行相关的命令 很多没接触过过的用户还是有一定的困难 那么今天就把最最最简单的方法分享给大家 全程都是可视化的操作 不需要在复制相关的命令了 赶快跟
  • GitHub上精确搜索查找项目笔记

    1 通过in关键词限制搜索范围 1 abc in name 项目名里面包含abc 2 abc in description 项目描述包含abc 3 abc in readme 项目的readme文件里包含abc 4 还可以通过abc in
  • Error: failed to download “stable/openebs“

    安装openebs出现下面的异常 Error failed to download stable openebs hint running helm repo update may help 解决方案 未修改前的helm repo源 修改h
  • 解决在 Win7 旗舰版虚拟机中安装 VMware Tools 失败问题

    报错提示如下 安装程序无法自动安装Virtual Machine Communication Interface VMCI 驱动程序 必须手动安装此驱动程序 解决方法 安装以下两个补丁 1 kb4474419 2 kb4490628 按顺序
  • android 调用短信,Android实现接收短信和发送短信功能

    在学接收短信和发送短信之前 先简单介绍一下 SMS 短消息服务 SMS Short Message Service 短信息服务 是一种存储和转发服务 也就是说 短信息并不是直接从发信人发送到接收人 而是始终通过 SMS 中心进行转发 如果接
  • linux运行rs程序,【linux-基础】安装scp,rz,rs命令

    在测试中需要在两台虚拟机之间传递文件 首先想到的是scp命令 结果提示 bash scp command not found 想当然用yum install scp命令安装 结果提示 No package scp available 后来发
  • WebDriver概述

    什么是WebDriver Webdriver Selenium2 0 是一种用于Web应用程序的自动测试工具 它提供了一套友好的API Webdriver完全就是一套类库 不依赖于任何测试框架 除了必要的浏览器驱动 WebDriver AP
  • 用Python画奥运五环

    最近接触到了Python的一个有趣的库turtle 写了一个画奥运五环的程序 代码如下 用turtle模块绘画奥运五环 import turtle 设置公共属性 turtle width 10 第一个环 turtle color black
  • 华为OD机试 - 最大社交距离(Java)

    题目描述 疫情期间需要大家保证一定的社交距离 公司组织开交流会议 座位一排共 N 个座位 编号分别为 0 N 1 要求员工一个接着一个进入会议室 并且可以在任何时候离开会议室 满足 每当一个员工进入时 需要坐到最大社交距离 最大化自己和其他
  • IOS开发笔记之常用的第三方库(太多了。)

    图像 1 图片浏览控件MWPhotoBrowser 实现了一个照片浏览器类似 iOS 自带的相册应用 可显示来自手机的图片或者是网络图片 可自动从网络下载图片并进行缓存 可对图片进行缩放等操作 下载 https github com mwa
  • js-- 1-100循环

  • Linux系统中运行.sh文件的几种方法

    在Linux系统中执行 sh文件的几种方法 1 cd到 sh文件所在的目录 然后执行 xxx sh 前提 该 sh文件要有可执行的权限 chmod u x xxx sh 2 在任何路径下 输入 sh文件的绝对路径进行执行 前提 该 sh文件
  • 统计代码耗时

    二 常规方法 2 1 时间差统计 这种方式是最简单的方法 记录下开始时间 再记录下结束时间 计算时间差即可 public class TimeDiffTest public static void main String args thro
  • 安鸾之中间件系列

    声明 文中所涉及的技术 思路和工具仅供以安全为目的的学习交流使用 任何人不得将其用于非法用途以及盈利等目的 否则后果自行承担 本文转发于涂寐 s Blogs https 0xtlu github io 0x00 tomcat8弱口令 0o0
  • upx3.94手动脱壳

    工具 吾爱破解论坛Ollydbg ImportREConstructor upx3 94下载地址 https github com upx upx releases download v3 94 upx394w zip 环境 XP 还是XP
  • 换盘符cd的用法

    如果是在本盘内切换文件夹 直接使用cd 后面跟地址即可 如果是跨区切换地址 cd 后面就需要跟 d 斜杠d d就代表着跨分区切换地址 cd d d C ProgramData Anaconda3 Scripts gt cd d d d gt
  • linux之查看端口占用

    第一章 linux之帮助命令 第二章 linux命令行快捷键 第三章 linux之防火墙 第四章 linux之服务开机自启 第五章 linux之关机与重启 第六章 linux之环境变量 第七章 linux之目录操作命令 第八章 linux之
  • esp8266与stm32、手机通讯(原子云)——hal库(有代码)

    本文所讲 正点原子的wifi模块esp8266与正点原子开发板战舰V3 stm32f103zet6 及手机app通讯 esp8266分为三种工作模式 STA 8266连接到网络比如wifi 手机热点等 AP 8266作为热点 由手机连接到8
  • 规则引擎Drools使用 第二篇Drools规则引擎介绍

    Drools规则引擎介绍 drools是一款由JBoss组织提供的基于Java语言开发的开源规则引擎 可以将复杂且多变的业务规则从硬编码中解放出来 以规则脚本的形式存放在文件或特定的存储介质中 例如存放在数据库中 使得业务规则的变更不需要修
  • Idea自带的http client工具使用攻略

    平时都是用postman来调接口 有时候也会用到swagger 用swagger还可以 直接在浏览器上开个页面即可 但是postman就不行了 需要单独的运行 个人感觉postman还是比较占内存的 最近和一个其他组同事联调 发现他们使用的