原文链接:https://github.com/corningsun/yuchigong/edit/httpClient/httpClient/README.md
界面客户端
- 使用手册
https://www.jetbrains.com/help/idea/testing-restful-web-services.html
- Tools -> HTTP Client -> Test RESTful Web Service
文本客户端
- 使用手册
https://www.jetbrains.com/help/idea/http-client-in-product-code-editor.html
特点
- 纯文本编写
- 支持统一配置
- 支持 scripts 脚本
创建新的请求文件
- Scratch files (全局文件)
- physical files(项目文件)
live templates
- ‘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);
- Live Templates 演示
- Live Templates 配置
支持 HTTP 1.1 所有方法
POST、GET、PUT、DELETE、HEAD、OPTIONS、TRACE、CONNECT
- GET
1 | ### Get request with a header |
- POST
1 | ### Send POST request with json body |
演示项目简介
- Spring Boot - Spring Security
- 首页 http://localhost:8080/index.html
- 登陆页面 http://localhost:8080/login.html
- 测试接口 (有登陆验证) http://localhost:8080/api/security/test
- 测试账号,用户名: lee,密码:123456
- 用浏览器直接访问测试接口会被强制跳转到登陆页面,登陆成功后返回接口调用结果。
- 原理是登陆校验成功返回 JSESSIONID,客户端将 JSESSIONID 存到 Cookie ,服务端根据 Cookie 验证是否登陆。
演示项目接口调用实战
登陆接口
1 | POST http://localhost:8080/api/login |
测试接口
1 | GET http://localhost:8080/api/security/test |
查看请求历史
- 点击右上角的按钮
- Tools | HTTP Client | Show HTTP Requests History
演示接口重构 - 统一配置
通用配置,域名 / 端口
rest-client.env.json
或http-client.env.json
1 | { |
个人安全配置,用户名 / 密码
rest-client.private.env.json
或http-client.private.env.json
1 | { |
重构后的请求文件
1 | ### 登陆 |
运行请求
点击运行按钮,可以选择对应的环境
使用 response handler scripts
引用方式
- 直接引用
1 | GET host/api/test |
- 文件引用
1 | GET host/api/test |
主要方法
HTTP Response handling API reference
- 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) // 打印日志
- client.global
- 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 等
- mimeType // 返回 MIME 类型,如:
- response.body // 字符串 或 JSON (如果
- 方法调用示例
1 | GET https://httpbin.org/status/200 |
演示接口重构 - 动态更新 Cookie
1 | ### 登陆 |
演示接口重构 - 测试接口返回
1 | ### 登陆 |
- login_demo_4_js_test.js
1 | client.test("Request executed successfully", function () { |