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

我最新最全的文章都在 南瓜慢说 www.pkslow.com ,欢迎大家来喝茶!
1 简介 在做Web应用开发的时候,经常需要测试Web接口,就需要一些客户端来发送HTTP请求到服务端。常用的客户端工具有Postman、curl等,经过多次使用,我觉得VSCode的REST Client还是非常好用的,介绍给大家。
它是VSCode的一个插件,要安装才能使用:
VSCode的REST Client指南,超好用的HTTP客户端工具
文章图片

主要特性有:
  • 在文本编辑器中就可以直接发送请求和查看返回;
  • 可以直接发送curl命令;
  • 可以将HTTP请求复制为curl命令,这样可以在其它linux终端上执行;
  • 可以管理请求历史:保存、查看、清除等;
  • 多个请求在一个文件上,用###分割;
  • 可以保存返回体到本地;
  • 生成多种语言的客户端代码,如python/Java等;
  • Cookies功能;
  • 最重要的一点:极其强大的变量管理功能。
接下来将通过示例介绍这些特性。
2 基本功能 我先新建一个文件pkslow.http,后缀要是httprest才可以被识别。
2.1 链接即请求 只要一个链接就可以了:
VSCode的REST Client指南,超好用的HTTP客户端工具
文章图片

不用其它内容,它就会显示Send Request,然后点击它,就能发送GET请求了。
2.2 多个请求 如果要多个请求,就通过###来分割。我们接着定义一个更完整的GET请求吧。
https://www.pkslow.com### GET https://www.pkslow.com HTTP/1.1

点击Send Request,会发送请求,返回体在右边:
VSCode的REST Client指南,超好用的HTTP客户端工具
文章图片

POST请求:
POST https://www.pkslow.com/user HTTP/1.1 content-type: application/json{ "name": "larry", "age": 18 }

2.3 将请求复制为curl命令 选中请求,右键然后选择如下:
VSCode的REST Client指南,超好用的HTTP客户端工具
文章图片

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

2.4 支持发送curl 可以支持运行crul命令,如下:
VSCode的REST Client指南,超好用的HTTP客户端工具
文章图片

2.5 将请求转化为客户端代码 操作如下:
VSCode的REST Client指南,超好用的HTTP客户端工具
文章图片

我们选择python,结果如下:
import requestsurl = "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] [] [aud:]}}
3.1 文件中自定义变量 通过@命令来定义变量,然后通过两个大括号{{}}来引用变量:
### @pkslowHost = www.pkslow.comGET {{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的右下角切换环境:
VSCode的REST Client指南,超好用的HTTP客户端工具
文章图片

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}}来引用变量。
4 总结 我把我觉得比较有用的功能都讲解了一下,更多请参考:GitHub vscode REST Client
欢迎关注微信公众号<南瓜慢说>,将持续为你更新...
VSCode的REST Client指南,超好用的HTTP客户端工具
文章图片

【VSCode的REST Client指南,超好用的HTTP客户端工具】多读书,多分享;多写作,多整理。

    推荐阅读