使用 Rest Client 优雅地发送 HTTP 请求

  1. Rest Client(后文将使用 RC 来简化书写) 是一款 VSCode 插件,可以方便高效的发送 HTTP 请求并查看响应。
  1. RC 支持的文件扩展名为 .http 与 .rest。故使用 RC 的第一步是创建正确扩展名的文件,例如 example.http。
  2. 发送 GET 请求,有两种写法。多个请求使用 ### 进行分割(通用)
http 复制代码
https://example.com/comments/1 

###

GET https://example.com/topics/1 HTTP/1.1
  1. 发送 POST 请求
http 复制代码
POST https://example.com/comments HTTP/1.1
content-type: application/json

{
    "name": "sample",
    "time": "Wed, 21 Oct 2015 18:27:50 GMT"
}
  1. POST 请求的方法体,也可以是文件路径,以 < 开头
http 复制代码
POST https://example.com/comments HTTP/1.1
Content-Type: application/xml
Authorization: token xxx

< ./demo.xml

###

POST https://example.com/comments HTTP/1.1
Content-Type: application/xml
Authorization: token xxx

< C:\Users\Default\Desktop\demo.xml
  1. 查看最近50个请求(Request History)

Ctrl + Alt + H(Cmd + Alt + H for macOS)

  1. 使用变量,定义变量时以 @ 开头
https 复制代码
@hostname = api.example.com
@port = 8080
@host = {{hostname}}:{{port}}
@contentType = application/json
@createdAt = {{$datetime iso8601}}
@modifiedBy = {{$processEnv USERNAME}}

###

@name = Strunk & White

GET https://{{host}}/authors/{{%name}} HTTP/1.1

###

PATCH https://{{host}}/authors/{{%name}} HTTP/1.1
Content-Type: {{contentType}}

{
    "content": "foo bar",
    "created_at": "{{createdAt}}",
    "modified_by": "{{modifiedBy}}"
}

8.使用环境变量,在 vscode 的设置文件 settings.json 进行配置

settings.json 复制代码
"rest-client.environmentVariables": {
    "$shared": {
        "version": "v1",
        "prodToken": "foo",
        "nonProdToken": "bar"
    },
    "local": {
        "version": "v2",
        "host": "localhost",
        "token": "{{$shared nonProdToken}}",
        "secretKey": "devSecret"
    },
    "production": {
        "host": "example.com",
        "token": "{{$shared prodToken}}",
        "secretKey" : "prodSecret"
    }
}
  1. 将请求转化为代码片段(Generate Code Snippet)

Ctrl + Alt + C(Cmd + Alt + C for macOS)

  1. 获取其他请求返回体的值为变量(摘录:VSCode的REST Client指南,超好用的HTTP客户端工具

设想我们经常遇到的一个场景,先通过 login 请求来获取 Token ,然后再把拿到的 Token 作为请求头发送其它请求。这个 Token 肯定是每次登陆都不一样的,如果每次都要获取,然后复制,再粘贴到后面请求中,就会非常麻烦。RC 为这种场景提供了便利的办法,我们来看看怎么使用吧:

先通过登陆请求获取Token:

https 复制代码
###
# @name loginAdmin
POST http://{{hostname}}/auth/login HTTP/1.1
Content-Type: application/json

{
    "username": "pkslow", 
    "password": {{password}}
}

我们添加多了一行,使用这样一个特殊注释,来给请求定义一个名字

https 复制代码
# @loginAdmin

如果返回体的内容如下:

eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJwa3Nsb3ciLCJyb2xlcyI6WyJST0xFX0FETUlOIl0sImlhdCI6MTYyMjI3OTMxMCwiZXhwIjoxNjIyMjc5OTEwfQ.h-fwUEOPx_tttlBOR8cXMHJWy2n6ath7lTqzfdAX87c

意味着我们要引用返回的所有内容,如下:

http 复制代码
### 
@token = {{loginAdmin.response.body.*}}
GET http://{{hostname}}/admin HTTP/1.1
Authorization: Bearer {{token}}

通过{{loginAdmin.response.body.*}}来引用变量。格式如下:

{{requestName.(response|request).(body|headers).(*|JSONPath|XPath|Header Name)}}

如果返回体的内容如下:

{ "token": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJwa3Nsb3ciLCJyb2xlcyI6WyJST0xFX0FETUlOIl0sImlhdCI6MTYyMjI3OTMxMCwiZXhwIjoxNjIyMjc5OTEwfQ.h-fwUEOPx_tttlBOR8cXMHJWy2n6ath7lTqzfdAX87c" }

就通过{{loginAdmin.response.body.$.token}}来引用变量。

相关推荐
星释15 小时前
Rust 练习册 :Leap与日期计算
开发语言·后端·rust
码事漫谈19 小时前
C++死锁深度解析:从成因到预防与避免
后端
码事漫谈19 小时前
智能体颠覆教育行业:现状、应用与未来展望调研报告
后端
蓝-萧19 小时前
【玩转全栈】----Django基本配置和介绍
java·后端
priority_key19 小时前
排序算法:堆排序、快速排序、归并排序
java·后端·算法·排序算法·归并排序·堆排序·快速排序
韩立学长19 小时前
基于Springboot的旧时月历史论坛4099k6s9(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端
汤姆yu21 小时前
基于SpringBoot的动漫周边商场系统的设计与开发
java·spring boot·后端
灰小猿21 小时前
Spring前后端分离项目时间格式转换问题全局配置解决
java·前端·后端·spring·spring cloud
RedJACK~1 天前
Go Ebiten小游戏开发:扫雷
开发语言·后端·golang
老夫的码又出BUG了1 天前
分布式Web应用场景下存在的Session问题
前端·分布式·后端