REST Client

简介

功能

  • 在文本编辑器中就可以直接发送请求和查看返回
  • 支持环境变量
  • 可以直接发送 curl 命令
  • 管理请求历史:可以保存请求历史,方便下次使用
  • 生成代码:可以将请求转换为多种语言的代码
  • 支持多种请求方式:GET、POST、PUT、DELETE、HEAD、OPTIONS、PATCH、TRACE
  • Cookie 管理:可以管理请求的 Cookie
  • 变量管理:可以管理请求的变量

使用

  • 创建一个 .http 文件,输入请求内容,显示Send Request 然后点击,就能发送 get 请求。
GET https://www.baidu.com HTTP/1.1
  • 发送多个请求, 用 ### 分割
### get 请求并查看响应结果
GET https://www.baidu.com HTTP/1.1

### post 请求并查看响应结果
POST https://www.baidu.com HTTP/1.1

  • 强大的变量

    • 内置变量(常用)

      • {{$guid}}:生成一个 GUID
      • {{$randomInt min max}}:生成一个指定范围内的随机整数
      • {{$randomGuid}}:生成一个随机 GUID
      • {{$timestamp}}:生成一个时间戳
      • {{$datetime}}:生成一个当前时间
      • {{$isoDate}}:生成一个 ISO 格式的当前时间
      • {{$newGuid}}:生成一个新的 GUID
      • {{$randomInt}}:生成一个随机整数
      • {{$randomInt min}}:生成一个大于等于 min 的随机整数
      • {{$randomInt min max}}:生成一个指定范围内的随机整数
      • {{$randomDouble}}:生成一个随机浮点数
      • {{$randomDouble min}}:生成一个大于等于 min 的随机浮点数
      • {{$randomDouble min max}}:生成一个指定范围内的随机浮点数
      • {{$randomString length}}:生成一个指定长度的随机字符串
      • {{$randomString length chars}}:生成一个指定长度和字符集的随机字符串
      • {{$randomBytes length}}:生成一个指定长度的随机字节
    • 文件中自定义变量

    @base_url = https://www.baidu.com
    
    ### get 请求并查看响应结果 使用变量
    GET {{base_url}} HTTP/1.1
    
    • 配置多环境变量:在 vscode 的设置文件 settings.json 配置多环境变量
    "rest-client.environmentVariables": {
      "$shared": {
        "username": "pkslow",
        "password": "123456"
      },
      "local": {
        "hostname": "localhost:8080",
        "password": "{{$shared password}}"
      },
      "production": {
        "hostname": "localhost:8081",
        "password": "{{$shared password}}"
      }
    }
    

    添加了两个环境 local 和 production,其中$shared 的变量是大家都可以引用的。

    ### post 请求并查看响应结果
    POST https://{{hostname}}/login HTTP/1.1
    Content-Type: application/json
    
    {
      "username": "hello",
      "password": "{{password}}"
    }
    
    • 获取其它请求返回体的值为变量: 使用 @ 符号。

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

    • 登录获取 token

    ### post 登录获取token
    # @name loginAdmin
    POST https://{{hostname}}/login HTTP/1.1
    Content-Type: application/json
    
    {
      "username": "hello",
      "password": "{{password}}"
    }
    
    • 添加一行 # @name loginAdmin

    • 请求返回数据格式为 直接token, 可以通过{{loginAdmin.response.body.*}}来引用变量

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

      eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJwa3Nsb3ciLCJyb2xlcyI6WyJST0xFX0FETUlOIl0sImlhdCI6MTYyMjI3OTMxMCwiZXhwIjoxNjIyMjc5OTEwfQ.h-fwUEOPx_tttlBOR8cXMHJWy2n6ath7lTqzfdAX87c
      
      ### get 请求并查看响应结果 使用变量
      @token = {{loginAdmin.response.body.*}}
      GET https://{{hostname}}/api/v1/users HTTP/1.1
      Authorization: Bearer {{token}}
      
    • 如果返回体为如下:

    {
      "token": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJwa3Nsb3ciLCJyb2xlcyI6WyJST0xFX0FETUlOIl0sImlhdCI6MTYyMjI3OTMxMCwiZXhwIjoxNjIyMjc5OTEwfQ.h-fwUEOPx_tttlBOR8cXMHJWy2n6ath7lTqzfdAX87c"
    }
    
    • 可以通过 {{loginAdmin.response.body.$.token}} 来引用变量
    ### get 请求并查看响应结果 使用变量
    @token = {{loginAdmin.response.body.$.token}}
    GET https://{{hostname}}/api/v1/users HTTP/1.1
    Authorization: Bearer {{token}}
    

参考