9

VSCode的REST Client指南,超好用的HTTP客户端工具

 3 years ago
source link: https://www.pkslow.com/archives/vscode-rest-client
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

在做Web应用开发的时候,经常需要测试Web接口,就需要一些客户端来发送HTTP请求到服务端。常用的客户端工具有Postman、curl等,经过多次使用,我觉得VSCode的REST Client还是非常好用的,介绍给大家。

它是VSCode的一个插件,要安装才能使用:

主要特性有:

  • 在文本编辑器中就可以直接发送请求和查看返回
  • 可以直接发送curl命令
  • 可以将HTTP请求复制为curl命令,这样可以在其它linux终端上执行;
  • 可以管理请求历史:保存、查看、清除等;
  • 多个请求在一个文件上,用###分割;
  • 可以保存返回体到本地;
  • 生成多种语言的客户端代码,如python/Java等;
  • Cookies功能;
  • 最重要的一点:极其强大的变量管理功能

接下来将通过示例介绍这些特性。

2 基本功能

我先新建一个文件pkslow.http,后缀要是httprest才可以被识别。

2.1 链接即请求

只要一个链接就可以了:

不用其它内容,它就会显示Send Request,然后点击它,就能发送GET请求了。

2.2 多个请求

如果要多个请求,就通过###来分割。我们接着定义一个更完整的GET请求吧。

https://www.pkslow.com

###
GET https://www.pkslow.com HTTP/1.1

点击Send Request,会发送请求,返回体在右边:

POST请求:

POST https://www.pkslow.com/user HTTP/1.1
content-type: application/json

{
    "name": "larry",
    "age": 18
}

2.3 将请求复制为curl命令

选中请求,右键然后选择如下:

结果如下:

curl --request GET \
  --url https://www.pkslow.com/ \
  --header 'user-agent: vscode-restclient'

2.4 支持发送curl

可以支持运行crul命令,如下:

2.5 将请求转化为客户端代码

操作如下:

我们选择python,结果如下:

import requests

url = "https://www.pkslow.com/"
headers = {'user-agent': 'vscode-restclient'}
response = requests.request("GET", url, headers=headers)
print(response.text)

3 强大的变量

将这个变量的所有功能一起讨论,是因为我觉得它太强大了。也是我选择它很重要的一个理由。

关于变量:

支持自定义变量和环境变量;

不同环境变量定义及环境切换功能;

共享变量;

可以将变量放在任何地方:URL、Header、body等;

获取其它请求的变量;

提供系统动态变量:

  • {{$guid}}
  • {{$randomInt min max}}
  • {{$timestamp [offset option]}}
  • {{$datetime rfc1123|iso8601 [offset option]}}
  • {{$localDatetime rfc1123|iso8601 [offset option]}}
  • {{$processEnv [%]envVarName}}
  • {{$dotenv [%]variableName}}
  • {{$aadToken [new] [public|cn|de|us|ppe] [<domain|tenantId>] [aud:<domain|tenantId>]}}

3.1 文件中自定义变量

通过@命令来定义变量,然后通过两个大括号{{}}来引用变量:

###
@pkslowHost = www.pkslow.com

GET {{pkslowHost}} HTTP/1.1

3.2 配置多环境变量

在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的变量是大家都可以引用的。

引用变量hostname和password如下:

###
POST http://{{hostname}}/auth/login HTTP/1.1
Content-Type: application/json

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

在vscode的右下角切换环境:

3.3 获取其它请求返回体的值为变量

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

先通过登陆请求获取Token:

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

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

我们添加多了一行:

# @name loginAdmin

给它定义一个名字,后续就可以引用它的返回体了。

返回体内容如下:

eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJwa3Nsb3ciLCJyb2xlcyI6WyJST0xFX0FETUlOIl0sImlhdCI6MTYyMjI3OTMxMCwiZXhwIjoxNjIyMjc5OTEwfQ.h-fwUEOPx_tttlBOR8cXMHJWy2n6ath7lTqzfdAX87c

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

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

我把我觉得比较有用的功能都讲解了一下,更多请参考:GitHub vscode REST Client


欢迎关注微信公众号<南瓜慢说>,将持续为你更新...

推荐阅读:
如何制定切实可行的计划并好好执行
容器技术(Docker-Kubernetes)
SpringBoot-Cloud相关
Https专题


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK