IDEA中的HTTP Client使用教程

介绍

IDEA RESTful WebServices是一个类似jmeter,postman的工具。可以使用纯文本编辑。

官网介绍地址:https://www.jetbrains.com/help/idea/restful-webservices.html

该工具是idea的一个组件,在Tools->Http client下;当然goland也是相同;低版本是Test Restful WebService,新版本的idea已经提示改功能废弃,建议使用new HTTP Client也就是我们此教程要介绍的工具;

示例:

创建demo1.http文件

GET https://www.baidu.com

###

点击右侧运行即可查看到结果

HTTP请求中使用变量

要在请求中提供变量,请将其括在双花括号中,如 {{variable}} 。变量名称只能包含字母,数字,下 划线符号 _ 或连字符 - 。

预定义的动态变量

每次您运行请求时,动态变量都会生成一个值: $uuid :生成通用的唯一标识符(UUID-v4) $timestamp :生成当前的UNIX时间戳 $randomInt :生成介于0到1000之间的随机整数。

GET http://localhost/api/get?id={{$uuid}}

创建环境变量

在项目内部,创建以下文件:

  • 在rest-client.env.json(或http-client.env.json)是包含常见的变量,其目的是要与你的项目一起 分发的常规文件。
  • 在rest-client.private.env.json(或http-client.private.env.json)是一个 私人 的文件可能包括密 码,令牌,证书和其他敏感信息。默认情况下,此文件被添加到VCS忽略文件列表中。在httpclient.private.env.json文件中指定的变量的值将覆盖环境文件中的值。
{
 "dev": {
 "host": "http://127.0.0.1:80",
 "name": "zhangsan"
 },
 "prod": {
 "host": "http://127.0.0.1:80",
 "name":"lisi"
 }
}

调用示例

GET http://{{host}}/api/get?name={{name}}

脚本设置环境变量

//设置环境变量
> {%
client.global.set("token", response.body.token);
%}

脚本检测

可以对返回值进行打印,断言;

# 登陆
POST http://{{host}}/system/login
Content-Type: application/x-www-form-urlencoded

username=admin&password=123456

> {%
 client.log(JSON.stringify(response.body));
	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 + "'");
	});
	client.test("Request code success", function() {
		client.assert(response.body.code === 0, "Response code is not 0");
		client.global.set("token", response.body.data);
	});
%}

###

类型介绍

  • client

client.global

  • set(varName, varValue) // 设置全局变量
  • get(varName) // 获取全局变量
  • isEmpty // 检查 global 是否为空
  • clear(varName) // 删除变量
  • clearAll // 删除所有变量
  • client.test(testName, func) // 创建一个名称为 testName 的测试
  • client.assert(condition, message) // 校验条件 condition 是否成立,否则抛出异常 message
  • client.log(text) // 打印日志
  • response
  • response.body // 字符串 或 JSON (如果 content-type 为 application/json .)
  • response.headers

valueOf(headerName) // 返回第一个匹配 headerName 的值,如果没有匹配的返回 null
valuesOf(headerName) // 返回所有匹配 headerName 的值的数组,如果没有匹配的返回空数组

  • response.status // Http 状态码,如: 200 / 400
  • response.contentType

mimeType // 返回 MIME 类型,如: text/plain , text/xml , application/json .
charset // 返回编码 UTF-8 等

示例test.http

###
# GET请求
GET http://{{host}}/api/get?name={{name}}

###

# POST请求
POST http://{{host}}/api/post/kv
Content-Type: application/x-www-form-urlencoded

name=zhangsan&age=11
###

# POST请求
POST http://{{host}}/api/post/json
Content-Type: application/json
referer: https://goframe.org/
cookie: name=zhangsan; age=11

{"name":"zhangsan","age":11}
###

test2.http

###
# 未登录
POST http://{{host}}/system/user/info

> {%
 client.log(JSON.stringify(response.body));
	client.test("Request executed successfully", function() {
		client.assert(response.status === 404, "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 + "'");
	});
	client.test("Request code fail", function() {
		client.assert(response.body.code === -1, "Response code is not -1");
	});
%}

###

# 登陆
POST http://{{host}}/system/login
Content-Type: application/x-www-form-urlencoded

username=admin&password=123456
> {%
 client.log(JSON.stringify(response.body));
	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 + "'");
	});
	client.test("Request code success", function() {
		client.assert(response.body.code === 0, "Response code is not 0");
		client.global.set("token", response.body.data);
	});
%}

###

# 登陆后访问用户信息
POST http://{{host}}/system/user/info
token: {{token}}

> {%
 client.log(JSON.stringify(response.body));
	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 + "'");
	});
	client.test("Request code success", function() {
		client.assert(response.body.code === 0, "Response code is not 0");
	});
%}
###

# 登陆后访问用户年龄
POST http://{{host}}/system/user/age
token: {{token}}

> {%
 client.log(JSON.stringify(response.body));
	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 + "'");
	});
	client.test("Request code success", function() {
		client.assert(response.body.code === 0, "Response code is not 0");
	});
%}
###

http-client.env.json

{
 "dev": {
 "host": "http://127.0.0.1:80",
 "name": "zhangsan"
 },
 "prod": {
 "host": "http://127.0.0.1:80",
 "name":"lisi"
 }
}

main.go

package main

import (
	"github.com/gogf/gf/frame/g"
	"github.com/gogf/gf/net/ghttp"
	"github.com/gogf/gf/util/guuid"
)

var token string

func main() {
	s := g.Server()
	group := s.Group("/api")
	// 默认路径
	// GET带参数
	group.GET("/get", func(r *ghttp.Request) {
		r.Response.Writeln("Hello World!")
		r.Response.Writeln("name:", r.GetString("name"))
	})
	// POST KV
	group.POST("/post/kv", func(r *ghttp.Request) {
		r.Response.Writeln("func:test")
		r.Response.Writeln("name:", r.GetString("name"))
		r.Response.Writeln("age:", r.GetInt("age"))
	})
	// POST JSON
	group.POST("/post/json", func(r *ghttp.Request) {
		r.Response.Writeln("func:test2")
		r.Response.Writeln("name:", r.GetString("name"))
		r.Response.Writeln("age:", r.GetString("age"))

		h := r.Header
		r.Response.Writeln("referer:", h.Get("referer"))
		r.Response.Writeln("cookie:", h.Get("cookie"))
		r.Response.Writeln(r.Cookie.Map())
	})

	// 模拟登陆
	system := s.Group("/system")
	// 登陆接口
	system.POST("/login", func(r *ghttp.Request) {
		if "admin" == r.GetString("username") &&
			"123456" == r.GetString("password") {
			token = guuid.New().String()
			r.Response.WriteJson(g.Map{
				"code": 0,
				"data": token,
			})
			r.Exit()
		}
		r.Response.WriteJson(g.Map{
			"code": -1,
			"data": "",
		})
	})
	// 获取用户信息
	system.POST("/user/info", func(r *ghttp.Request) {
		if token != r.Header.Get("token") || token == "" {
			r.Response.WriteJson(g.Map{
				"code": -1,
				"data": "",
			})
			r.Exit()
		}

		// 返回用户信息
		r.Response.WriteJson(g.Map{
			"code": 0,
			"data": "zhangsan",
		})
	})
	// 获取用户年龄
	system.POST("/user/age", func(r *ghttp.Request) {
		if token != r.Header.Get("token") || token == "" {
			r.Response.WriteJson(g.Map{
				"code": -1,
				"data": "",
			})
			r.Exit()
		}

		// 返回用户信息
		r.Response.WriteJson(g.Map{
			"code": 0,
			"data": 11,
		})
	})

	s.SetPort(80)
	s.Run()
}

代码地址

github:https://github.com/goflyfox/tools

gitee:https://gitee.com/goflyfox/tools

教程视频

bilibili教程地址:https://www.bilibili.com/video/BV12V411f7ab/

到此这篇关于IDEA中的HTTP Client使用教程的文章就介绍到这了,更多相关IDEA HTTP Client使用内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 解决IDEA使用Spring Initializr创建项目时无法连接到https://start.spring.io的问题

    IDEA使用Spring Initializr创建项目时报错 但在浏览器中输入https://start.spring.io能正常访问. 解决方式 点击"Check connection"测试一下配置,输入 https://start.spring.io  ,提示连接成功,就说明弄好了. 到此这篇关于解决IDEA使用Spring Initializr创建项目时无法连接到https://start.spring.io的问题的文章就介绍到这了,更多相关IDEA使用Spring Initia

  • 解决IntelliJ IDEA创建spring boot无法连接http://start.spring.io/问题

    IntelliJ IDEA 是大家常用编码工具之一: spring-boot也是目前常用的spring框架之一: 但是偶尔会遇到一些不常遇见的问题:使用IntelliJ IDEA创建spring boot却无法连接http://start.spring.io/: 今天屌丝猿亲身体验给大家分享一下解决办法: 第一步:打开控制面板进入指定菜单 第二部:找到自己电脑默认的浏览器,我这里用的Google chrome,然后将两个按钮选中:如果找不到就点击 允许允许另一个程序,然后选中桌面上你想要的程序,

  • 一看就懂的IDEA编辑器 .http教程详解

    简介 测试Web服务时,可以直接在IntelliJ IDEA代码编辑器中创建,编辑和执行HTTP请求 . 在日常接口迭代开发过程中,开发人员如果没有Postman-Folder集合,需要直接CV接口文档,过程枯燥且范围,使用IDEA自带的.http插件进行请求,真的很香 在下面的示例解释中,小编会以PHPStorm的ide作为例子的讲解 插件安装 在使用之前先确保 HTTP Client插件的安装,如果已经安装请无视这一步. > 安装后记得重启IDE编辑器确保插件可以正常使用 创建HTTP请求文

  • IDEA遇到Internal error. Please refer to http://jb. gg/ide/critical-startup-errors的问题及解决办法

    今天打算把原本的2018的idea升个级,安一个2020 的idea试试各种新插件,但遇到了很多问题,比如安装后打不开,好不容易打开了然后报错 Internal error. Please refer to http://jb. gg/ide/critical-startup-errors  ... Caused by: java. lang. ClasslotFoundException: com rover12421. crack. jetbrains. v2. Util at com in

  • 学会IDEA REST Client后就可以丢掉postman了

    前言 接口调试是每个软件开发从业者必不可少的一项技能,一个项目的的完成,可能接口测试调试的时间比真正开发写代码的时间还要多,几乎是每个开发的日常工作项.所谓工欲善其事必先利其器,在没有尝到IDEA REST真香之前,postman(chrome的一款插件)确实是一个非常不错的选择,具有完备的REST Client功能和请求历史记录功能.但是当使用了IDEA REST之后,postman就可以丢了,因为,IDEA REST Client具有postman的所有功能,而且还有postman没有的功能

  • IDEA中的HTTP Client使用教程

    介绍 IDEA RESTful WebServices是一个类似jmeter,postman的工具.可以使用纯文本编辑. 官网介绍地址:https://www.jetbrains.com/help/idea/restful-webservices.html 该工具是idea的一个组件,在Tools->Http client下:当然goland也是相同:低版本是Test Restful WebService,新版本的idea已经提示改功能废弃,建议使用new HTTP Client也就是我们此教程

  • 利用RJB在Ruby on Rails中使用Java代码的教程

    开始之前 关于本教程 Ruby on Rails (Rails) 是用 Ruby 编写的一个 full-stack Web 应用程序框架,而 Ruby 是一种功能丰富的.免费的.可扩展的.可移植的.面向对象的脚本编制语言.Rails 在 Web 应用程序开发人员之间非常流行.通过它,可以快速有效地开发 Web 应用程序,并将其部署到任何 Web 容器中,例如 IBM? WebSphere? 或 Apache Tomcat. 在 Rails 和类似的 Web 应用程序开发框架出现之前,用于 Web

  • 在 CentOS 7 中安装 MySQL 8 的教程详解

    准备 本文环境信息: 软件 版本 CentOS CentOS 7.4 MySQL 8.0.x 安装前先更新系统所有包 sudo yum update 安装 1. 添加 Yum 包 wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm # 或者 wget http://repo.mysql.com/mysql80-community-release-el7-1.noarch.rpm sudo yum up

  • jupyter notebook 调用环境中的Keras或者pytorch教程

    1.安装插件,在非虚拟环境 conda install nb_conda conda install ipykernel 2.安装ipykernel包,在虚拟环境下安装 在Windows使用下面命令:激活环境并安装插件(这里的 Keras 是我的环境名,安装的时候换成自己的环境名即可) activate keras conda install ipykernel 在linux 使用下面的命令: 激活环境并安装插件 source activate keras conda install ipyke

  • Angularjs中的ui-bootstrap的使用教程

    1.新建uiBootstrap.html页面,引入依赖的js和css类库 2.新建uiBootstrap.js文件,定义一个uiModule 模块,引入依赖的模块 /** * Created by zhong on 2015/9/7. */ var uiModule = angular.module("uiModule",["ui.bootstrap","ui.router"]); }); 3.定义dialog弹出窗口的模板 4.定义一个 UiC

  • Java8中的lambda表达式入门教程

    1.基本介绍 lambda表达式,即带有参数的表达式,为了更清晰地理解lambda表达式,先上代码: 1.1 两种方式的对比 1.1.1 方式1-匿名内部类 class Student{ private String name; private Double score; public Student(String name, Double score) { this.name = name; this.score = score; } public String getName() { ret

  • 在虚拟机virtualbox中安装ubuntu的图文教程

    距离ubuntu最新版发布已经差不多半年了,博主近来对linux系统有了兴趣,奈何资金不足无法购置一台新机来安装ubuntu.所以想到了虚拟机. 虚拟机的选择 VMwareWorkstation,功能强大,虚拟机的显卡也不错.VMware缺点是很不绿色,会对你的系统有一些影响.而vmare workstation本身有点臃肿,占用系统资源比较多. Virtualbox虚拟机相对比VMWare workstation轻量级一些,运行一般的游戏的话,性能不输于vmware.但是配置起来相对麻烦,而且

  • SpringMVC 中配置 Swagger 插件的教程(分享)

    一.简介 Swagger的目标是为REST API定义一个与语言无关的标准接口,允许用户发现和理解计算机服务的功能,而无需访问源代码.当通过Swagger正确定义时,用户可以用最少量的实现逻辑理解远程服务并与之交互.类似于低级编程所做的接口. 二.实现步骤 1.添加 Maven 依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifact

  • IntelliJ IDEA 中git的使用图文教程

    项目管理离不开版本控制,目前主流版本控制工具大概就是SVN和Git,至于两者有啥区别这里就不详细介绍了,如果有不明白的可以上网查资料,后期如果有机会我再开篇栏目细说,而且现在市场上Git的使用率已经远远高于SVN.我们在用IDEA开发项目的时候如何熟练使用Git来控制代码版本呢? 一.安装Git 使用Git当然需要先安装Git,安装过程就不详细说明了,按装好之后,打开IDEA进入设置界面(可以直接点击工具栏上的,也可以通过快捷键Ctrl + Alt + S),搜索git,界面如下: 我们可以看到

  • CentOS 7中 Apache Web 服务器安装配置教程

    学习如何在CentOS 7 中的 Apache 上托管你自己的网站,这是一个可靠.流行且易于配置的 Web 服务器. 我托管自己的网站已经有很多年了.自从 20 多年前从 OS/2 切换到 Linux 以来,我一直将 Apache 作为我的服务器软件.Apache 是可靠.流行的,且基本的安装配置也很容易.对于更复杂的设置(比如多个网站)也并不是那么困难. Apache Web 服务器的安装和配置必须以 root 身份执行. 防火墙的配置也需要以 root 身份执行. 使用浏览器查看安装配置的结

随机推荐