使用 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}}来引用变量。

相关推荐
掘金挖土2 小时前
前端手摸手跑路之 AI 应用开发(三)
前端·后端
胡写代码2 小时前
若依 + MyBatis-Plus,分页为什么悄悄失效了?
java·后端
掘金者阿豪2 小时前
OceanBase 和金仓怎么选?别只看分布式,复杂查询更考验架构取舍
前端·后端·架构
cjz38992 小时前
Redis + Lua 实现秒杀优惠券 IP + 用户双维度令牌桶限流
后端
Shinomiya3 小时前
虚拟地址空间:从“地址一样但物理内存不同”说起
后端
孙启超3 小时前
【AI开发之Rust】第 1 课:认识 Rust 与开发环境 —— 装好工具链,跑通第一个程序
开发语言·人工智能·后端·ai·rust·安全架构
Bs_MoneyMagnet3 小时前
基于springboot+vue的宠物殡葬管理平台的设计与实现 源码+文档
java·javascript·vue.js·spring boot·后端·宠物
萧瑟余晖4 小时前
JPA 规范与 Hibernate 入门详解
后端·架构·hibernate
程序员cxuan4 小时前
跟 WebUI 说再见了,最强 DeepSeek 桌面端来了!
人工智能·后端·程序员
geovindu5 小时前
CSharp: Strategy Pattern
开发语言·后端·c#·.net·.netcore·策略模式·行为模式