IDEA自带 .http 请求工具文档

news2024/10/5 14:27:07

基础语法

请求格式

基础格式

Method Request-URI HTTP-Version
Header-field: Header-value

Request-Body

其中,GET 请求可以省略 Method 不写;HTTP-Version 可以省略不写,默认使用 1.1 版本。

示例:

GET https://www.baidu.com

注释

使用 //# 编写单行注释

示例:

# 百度首页请求
GET https://www.baidu.com

为请求命名

在请求前一行使用特殊注释格式,可以为请求命名。请求命名后,IDEA 中的 Service 面板会展示请求名称,而不是请求路径。
有如下三种方式

  • 使用 ###
  • 使用 # @name
  • 使用 # @name=

示例:

### 百度首页请求
# @name 百度首页请求
# @name=百度首页请求
# 这里还可以加单行注释
GET https://www.baidu.com

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

请求 URL 换行

当请求路径过长,或者 URL 中参数过多时,可以将 URL 换行,使用 Tab 缩进即可。

示例:

GET https://example.com:8080/api/get/html?
    firstname=John&
    lastname=Doe&
    planet=Tatooine&
    town=Freetown

Form 表单换行

提交 Form 表单时,body 中的参数也可以换行,此时换行不需要用 Tab 缩进。

示例:

POST https://ijhttp-examples.jetbrains.com/post
Content-Type: application/x-www-form-urlencoded

key1 = value1 &
key2 = value2 &
key3 = value3 &
key4 = value4 &
key5 = value5

读取文件作为请求 Body

文件路径可以使用绝对路径或相对路径。使用相对路径时,是相对于当前 .http 文件所在目录。

示例:

POST https://example.com:8080/api/html/post
Content-Type: application/json

< ./input.json

上传文件

可以在一个请求中上传一份或多份文件。

示例:

POST https://example.com/api/upload HTTP/1.1
Content-Type: multipart/form-data; boundary=boundary

// 直接读取文件作为上传的文件内容
--boundary
Content-Disposition: form-data; name="first"; filename="input.txt"

< ./input.txt

// 将固定文本作为上传的文件内容
--boundary
Content-Disposition: form-data; name="second"; filename="input-second.txt"

Text

// 将文件内容作为表单中的文本类型参数提交
--boundary
Content-Disposition: form-data; name="third";

< ./input.txt --boundary--

禁止重定向

默认情况下会跟随服务器返回的 301302 重定向,使用 @no-redirect 注解可以禁止跟随。

示例:

// @no-redirect
GET https://example.com/status/301

禁止保存 Cookies

默认情况下会记录服务器返回的 Set-Cookies 头中返回的 Cookies,并在其他请求中携带返回的 Cookies。
可以通过 @no-cookie-jar 注解禁止保存。

示例:

// @no-cookie-jar
GET example.com/api

保存响应

通过 >> 符号将响应结果保存到文件。

示例:

GET {{host}}/api/bs-login/v1/oauth/inner/login?uid={{uid}}

>> ./loginResponse.json

高级语法 - 变量

变量命名规则与使用方式

在 HTTP 请求中,可以使用 {{variable}} 格式引用变量。
变量名可以包含:字母、数字、英文下划线_、英文点.

示例:

GET https://www.baidu.com
Authorization: {{authToken}}

变量的类型

按照变量作用域范围,分为如下几种变量。

  • 环境变量
  • 全局变量
  • 脚本内变量
  • 请求内变量
  • 动态变量

环境变量

声明在 .env.json 环境文件中的变量,对所有脚本生效。
在打开一个脚本文件后,可以选择生效的环境。或者在执行请求时,选择一个环境。
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

环境变量文件有两种:

  1. 公有环境变量,文件名为 http.env.json
  2. 私有环境变量,文件名 http.private.env.json
    两种环境变量文件的格式相同,一般建议 HOST、公共参数 放到公有环境变量,密码、认证 Token 等敏感信息放到私有环境变量。私有环境变量会覆盖公有环境变量。

环境变量文件声明在脚本所在目录。JSON 文件第一层的属性 Key 即为环境名称,属性 Value 为此环境的变量。
例如一个包含 testprod 环境的公有变量文件内容为:

{
  "test": {
    "host": "http://test.com",
    "uid": "test@xxx.com"
  },
  "prod": {
    "host": "http://prod.com",
    "uid": "test@xxx.com"
  }
}

例如一个包含 testprod 环境的私有变量文件内容为:

{
  "test": {
    "username": "user",
    "password": "pass"
  },
  "prod": {
    "username": "user",
    "password": "pass"
  }
}

使用时按如下格式引用:

GET {{host}}/api/auth/token?user={{username}}&pass={{password}}
Authorization: Basic {{username}} {{password}}

全局变量

全局变量通过脚本设置。通过 client.global.set 函数设置。
全局变量会覆盖脚本中设置的变量。

示例:

### 获取认证 token
GET {{host}}/api/auth/token?user={{username}}&pass={{password}}

<{%
    client.global.set('authToken', response.data.token);
%}


### 访问接口
GET {{host}}/api/user/me
Authorization: {{authToken}}

脚本内变量

脚本内变量声明在 .http 文件中,可以被此文件中的请求访问。注意,声明变量的语句后面的请求,才能访问此变量。
声明格式为:

@变量名 = 变量值

示例:

@uid = liuqingtong@corp.netease.com

### 获取测试环境访问 token 
GET {{host}}/api/bs-login/v1/oauth/inner/login?uid={{uid}}

请求内变量

请求内变量声明在请求前的脚本中,仅针对脚本后的一次请求生效。
通过 request.variables.set 函数设置。

示例:

### 获取测试环境访问 token 
<{%
request.variables.set("uid", "liuqingtong@corp.netease.com")
%}

GET {{host}}/api/bs-login/v1/oauth/inner/login?uid={{uid}}

动态变量

动态变量是一些动态值,每次获取变量时得到的结果都不同。动态变量命名以 $ 开头。内置动态变量有:

  • $uuid $random.uuid 生成一个 UUID
  • $timestamp UNIX 时间戳
  • $isoTimestamp ISO-8601 格式的时间戳,UTC 时区
  • $randomInt 0-1000 的随机整数
  • $random.integer(from, to) 随机整数,可以指定范围,包括 from,不包括 to
  • $random.float(from, to) 随机浮点数,包括 from,不包括 to
  • $random.alphabetic(length) 生成指定长度的,由大小写字母组成的字符串
  • $random.alphanumeric(length) 生成指定长度的,由大小写字母、数字、下划线组成的 字符串
  • $random.hexadecimal(length) 生成指定长度的十六进制数字
  • $random.email 随机邮箱
  • $exampleServer IDEA 内置的 Web 服务器,仅在 IDEA 中可以访问。
  • $projectRoot 项目根目录,仅在 IDEA 中可以访问。
  • $historyFolder 项目根目录下的 .idea/httpRequests/,仅在 IDEA 中可以访问。

高级语法 - 脚本

脚本类型

.http 文件中可以嵌入或引用 JavaScript 脚本,用于在请求发起前、请求响应后进行数据处理。可以借此实现自动化测试。
使用脚本时,需单独另起一行,以 > 字符开头,后面跟引用脚本路径,或跟嵌入脚本。

引用脚本

示例:

### 获取测试环境访问 token 
GET {{host}}/api/bs-login/v1/oauth/inner/login?uid={{uid}}

> ./TokenHandler.js

嵌入脚本

嵌入脚本使用 {%%} 包裹脚本内容,脚本可以换行。

示例:

### 获取测试环境访问 token 
GET {{host}}/api/bs-login/v1/oauth/inner/login?uid={{uid}}

> {% 
client.global.set('authToken', response.data.token);
%}

JavaScript 脚本 API

https://www.jetbrains.com/help/idea/http-response-handling-api-reference.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1489548.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kubernetes基础(二十七)-nodePort/targetPort/port/containerPort/hostPort

1 nodePort/targetPort/port/containerPort 1.1 实现层级 1.2 配置方式 ########service########### apiVersion: v1 kind: Service metadata: labels: name: app1 name: app1 namespace: default spec: type: NodePort ports: - <strong>port: 8080 t…

C语言文件操作,linux文件操作,文件描述符,linux下一切皆文件,缓冲区,重定向

目录 C语言文件操作 如何打开文件以及打开文件方式 读写文件 关闭文件 Linux系统下的文件操作 open 宏标志位 write&#xff0c;read&#xff0c;close&#xff0c;lseek接口 什么是当前路径&#xff1f; linux下一切皆文件 文件描述符 文件描述符排序 C语言文件操…

Linux 操作系统概述

GNU计划 GNU --"GNUs Not UNIX" 建立一个自由、开放的UNIX操作系统&#xff08;Free UNIX&#xff09; GNU 通用公共许可证&#xff08;General Public License&#xff0c;GPL&#xff09; ”四项基本自由“ 按照自己的意愿自由地运行该软件自由地学习并根据…

SD-WAN网络中,CPE设备的重要性与选择

在SD-WAN企业组网的部署中&#xff0c;CPE&#xff08;Customer Premises Equipment&#xff09;扮演着至关重要的角色&#xff0c;被称为“企业边缘设备”或“客户端设备”。其作用不仅限于连接网络&#xff0c;更是SD-WAN网络的网关&#xff0c;负责管理多个WAN连接和VPN隧道…

挑战杯 基于深度学习的人脸性别年龄识别 - 图像识别 opencv

文章目录 0 前言1 课题描述2 实现效果3 算法实现原理3.1 数据集3.2 深度学习识别算法3.3 特征提取主干网络3.4 总体实现流程 4 具体实现4.1 预训练数据格式4.2 部分实现代码 5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 毕业设计…

vue实现文字手工动态打出效果

vue实现文字手工动态打出效果 问题背景 本文实现vue中&#xff0c;动态生成文字手动打出效果。 问题分析 话不多说&#xff0c;直接上代码&#xff1a; <template><main><button click"makeText"><p class"text">点击生成内容…

Linux-信号2

文章目录 前言一、信号是如何保存的&#xff1f;int sigemptyset(sigset_t *set);int sigfillset(sigset_t *set);int sigaddset (sigset_t *set, int signo);int sigdelset(sigset_t *set, int signo);int sigismember&#xff08;const sigset_t *set, int signo);int sigpen…

记录些大语言模型(LLM)相关的知识点

槽位对齐&#xff08;slot alignment&#xff09; 在text2sql任务中&#xff0c;槽位对齐&#xff08;slot alignment&#xff09;通常指的是将自然语言问题中的关键信息&#xff08;槽位&#xff09;与数据库中的列名或API调用中的参数进行匹配的过程。这个过程中&#xff0c…

C++--机器人的运动范围

目录 1. 题目 2. 思路 3. C代码测试 4. 测试结果 1. 题目 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动&#xff0c;每一次只能向左&#xff0c;右&#xff0c;上&#xff0c;下四个方向移动一格&#xff0c;但是不能进入行坐标和列坐标的数位之和大于k的格…

xss.haozi.me:0x09

https://www.segmentfault.com.haozi.me/j.js

MySQL 多表查询 连接查询 自连接

介绍 自连接查询&#xff0c;可以是内连接查询&#xff0c;也可以是外连接查询&#xff0c;一句话自己连接自己&#xff0c;一个表当作两个表进行连接。 语法 SELECT 字段列表 FROM 表A 别名A JOIN 表A 别名B ON 条件两个表A说明是同一张表&#xff0c;但是别名不同 案例…

Ubuntu环境使用docker构建并运行SpringBoot镜像

今天Ubuntu环境使用docker构建并运行SpringBoot镜像&#xff0c;看文章之前建议先查看安装流程: Linux环境之Ubuntu安装Docker流程 一、镜像打包过程及执行 1、创建一个测试目录 mkdir javaDemo 2、springBoot的包复制到此目录下 cp demo1-0.0.1-SNAPSHOT.jar /data/app/…

【源码】imx6ull实现触摸屏单点实验-移植tslib和qt

一、本实验实验的器材&#xff1a; 1.正点原子imx6ull的阿尔法开发板v2.2 2.屏幕ALIENTEK 4.3 RGBLCD 二、实验已经移植好的文件&#xff1a; 仓库代码&#xff1a;https://gitee.com/wangyoujie11/atkboard_-linux_-driver.git 1.文件说明 arm-qt.tar.bz2&#xff1a;移植好的…

SwiftUI中Alert与ActionSheet的集成

在SwiftUI中&#xff0c;Alert和ActionSheet是两个用于显示提示信息和选项的组件。Alert用于显示简单的提示信息&#xff0c;而ActionSheet用于显示多个选项供用户选择。 要在SwiftUI中使用Alert&#xff0c;首先需要在视图中定义一个State属性来存储是否显示Alert&#xff0c…

持续集成(CICD)- gogs仓库的部署和使用

文章目录 一、gogs的介绍二、部署gog仓库三、首次启动gogs四、登录五、创建一个非空仓库六、从仓库拉取代码到本地七、把本地编辑的代码上传到仓库 一、gogs的介绍 Gogs作为一个轻量级、易于部署和使用的自托管Git服务&#xff0c;为小型团队和个人开发者提供了一个简单而强大…

QT实现Ftp客户端的三种方法及工程实例

1.Qt项目中实现的FTP传输功能的三种方式 &#xff08;1&#xff09;QFtp QFtp 是 Qt4 中专门负责 FTP 传输的类&#xff0c;包括创建目录、删除目录、删除文件、获取文件列表、上传、下载等等常规操作。 注意&#xff1a;QT5中已经移除&#xff0c;如果需要用需要自己添加QFtp…

day6 数组 嵌套循环

1&#xff1a;打印杨辉三角 91 int arr[6][6];92 int i,j0;93 for(i0;i<6;i)94 {95 for(j0;j<i;j) 96 {97 if(j0||ij)98 {99 arr[i][j]1; …

2.3 shl,shr,inc,dec,xchg,neg指令,中断int指令

汇编语言 1. shl左移指令 shl是逻辑左移指令&#xff0c;它的功能是将一个reg或内存单元中的数据向左移位&#xff1b;将最后移出的一位写入cf中&#xff1b;最低位用0补充shl&#xff1a;shift left例如&#xff1a;0100 1000b 往左移一位&#xff0c;变成10010000b&#xf…

Vue.js中的diff算法:让虚拟DOM更高效

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

C++ Primer Plus Sixth Edition - 下载电子书与源代码

C Primer Plus Sixth Edition - 下载电子书与源代码 1. C Primer Plus, 6th Edition1.1. Download the source code files1.2. 下载源代码文件 2. C Primer Plus, Sixth Edition (PDF)3. Table of ContentsReferences 1. C Primer Plus, 6th Edition C Primer Plus, 6th Editi…