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工具使用攻略 的相关文章

随机推荐

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

    之前有录制和编写过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还是比较占内存的 最近和一个其他组同事联调 发现他们使用的