在测试 REST API 的时候,想必大家都会有不同的工具选择。如果是基于 CLI 的话,大家应该会选择 cURL。如果是 GUI 工具的话,相信很多人都会使用 Postman。不过今天,笔者要推荐的是 REST Client 插件。也许,它是比 Postman 更好的选择。

(扫描上方二维码,访问插件的 Marketplace 页面)

相比于 Postman,REST Client 支持了 cURL 和 RFC 2616 两种标准来调用 REST API。

RFC 2616

下面就是一个符合 RFC 2616 标准的 POST 请求:

POST http://dummy.restapiexample.com/api/v1/create HTTP/1.1
content-type: application/json{"name":"Hendry","salary":"61888","age":"26"
}

我们在 VS Code 新建一个以 .http 或者 .rest 结尾的文件,填入你的 HTTP 请求,点击 Send Request,或者右键选择 Send Request,或者直接用快捷键 Ctrl+Alt+R ,你的 REST API 就执行了,然后 API Response 就会显示在右边区域。是不是很方便?

cURL

下面是一个符合 cURL 标准的 POST 请求:

curl -X POST "http://dummy.restapiexample.com/api/v1/create" -d "Hello World"

同样地,也能通过 REST Client 在 VS Code 里一键运行。

HTTP 语言

REST Client 添加了 HTTP 语言的定义,支持把以 .http 或者 .rest 结尾的文件当作 HTTP 语言,提供了语法高亮,代码自动补全,代码注释等功能。

看到这里,你也许会问,我直接用 Postman 在 GUI 上填一填 REST API 的各个字段不就行了,干嘛还要写一个 HTTP 的文件。其实直接有一个 HTTP 文件的最大好处,就是方便分享。比如说,你可以把 HTTP 文件放到 GitHub,这样的话,所有开发或者使用项目的人都能复用这个 HTTP文 件了。也极大地方便管理你所有的 REST API。

更方便的是,通过 ### 分隔符,同一个 HTTP 文件里可以涵盖多个 HTTP 请求。不像 Postman,不同的 HTTP 请求需要放在不同的 tab 里。

代码生成

“代码生成”也是 REST Client 里一个很方便的功能,你可以方便地通过  Generate Code Snippet 命令来把 HTTP 请求生成出不同编程语言的代码:JavaScript、Python、C、C#、Java、PHP、Go、Ruby、Swift 等主流语言。

高阶功能

60s测试:你是否适合转型人工智能?

https://edu.csdn.net/topic/ai30?utm_source=csdn_bw

其实 REST Client 还有很多功能,有需求的童鞋可以慢慢挖掘,笔者列出了一些比较有用的高阶功能:

  • Authentication:REST Client 支持了 Basic Auth、SSL Client Certificates、Azure Active Directory 等多种验证机制

  • Cookies 的支持

  • 支持 HTTP 3xx 的重定向

  • 变量的支持:环境变量、文件变量、预定义的系统变量等等

下面就是使用文件变量的一个例子,这样在不同的 HTTP 请求中,变量就能共享了。其中,{{$datetime iso8601}} 是预定义的系统变量:

@hostname = api.example.com
@port = 8080
@host = {{hostname}}:{{port}}
@contentType = application/json
@createdAt = {{$datetime iso8601}}###@name = helloGET https://{{host}}/authors/{{name}} HTTP/1.1###PATCH https://{{host}}/authors/{{name}} HTTP/1.1
Content-Type: {{contentType}}{"content": "foo bar","created_at": {{createdAt}}
}

最后再给大家透露下:其实 REST Client 的作者也是中国人哦,曾经和笔者还是同事呢,是位大神哦!

作者:韩骏,微软研发工程师,VS Code 代码贡献者,VS Code 及 IoT 领域专家。

声明:本文为作者投稿,版权归其所有。


 热 文 推 荐 

☞ 华为确认开发自有操作系统,以防万一!

☞ 谷歌、Facebook 大规模宕机!“裸奔时代”程序员该怎么办?

☞ @程序员,多写点“坏”代码吧!

虎口夺食! 打破Facebook谷歌垄断, MIT大神和他的区块链数据库传奇! |人物志

☞ 杨超越第一,Python第二

以安全之名:2019年DevSecOps社区调研白皮书解读

☞ 再不编程就老了!05 后比特币专家准备赚个 134,000,000 元!

☞ 身为程序员的父母,你年薪多少才能让“码二代” 不输起跑线上?

System.out.println("点个好看吧!");
console.log("点个好看吧!");
print("点个好看吧!");
printf("点个好看吧!\n");
cout << "点个好看吧!" << endl;
Console.WriteLine("点个好看吧!");
Response.Write("点个好看吧!");
alert("点个好看吧!")
echo "点个好看吧!"

点击阅读原文,输入关键词,即可搜索您想要的 CSDN 文章。

喜欢就点击“好看”吧!

测试 REST API,到底应该选择什么样的 VS Code 插件?相关推荐

  1. 【Android 高性能音频】OboeTester 音频性能测试应用 ( Oboe 输出测试参数 | API 选择 | 音频输出设备选择 | 采样率 | 通道 | 采样格式 | 播放偏好 )

    文章目录 一.Oboe 输出测试参数面板 二.Oboe 输出测试参数 API 及 设备选择 三.Oboe 输出测试参数 音频参数 四.Oboe 输出测试参数 播放偏好 五.Oboe 输出测试参数 ( ...

  2. API测试| 了解API接口测试| API接口测试指南

    什么是API? API是一个缩写,它代表了一个 pplication P AGC软件覆盖整个房间.API是用于构建软件应用程序的一组例程,协议和工具.API指定一个软件程序应如何与其他软件程序进行交互 ...

  3. 到底应该选择哪种Linux.NET的部署方式?

    到底应该选择哪种Linux.NET的部署方式? 当前部署Linux.NET环境的方式可谓是五花八门,既有传统的源码编译的方式.又有各式各样的一键安装脚本.还有绿色包安装方式,而随着Mono官方的新站上 ...

  4. larvel 中的api.php_Laravel API 系列教程(一): 基于 Laravel 5.5 构建 测试 RESTful API...

    Laravel API 系列教程(一): 基于 Laravel 5.5 构建 & 测试 RESTful API 由 学院君 创建于2年前, 最后更新于 9个月前 版本号 #3 171702 v ...

  5. JMeter - 如何测试REST API / 微服务

    概述: 有许多方法和工具可用于测试REST API. 当我需要测试REST API时,在查看了各种工具和选项之后,由于以下原因,我选择了JMeter. JMeter是免费和开源的. JMeter可以从 ...

  6. [转载]「交叉验证」到底如何选择K值?

    「交叉验证」到底如何选择K值? 原文链接:https://cloud.tencent.com/developer/article/1410946 交叉验证(cross validation)一般被用于 ...

  7. 初学者到底该选择什么RTOS?

    文章目录 引言 温馨提示 答案 原因 个人学习rtos经历 深入发展规划 总结 引言 前天的推文中,有读者问我,作为初学者到底该选择什么RTOS来学习? 温馨提示 本答案仅适合初学者,对于已经学会os ...

  8. 3G时代,我们到底该选择谁?

    3G时代,我们到底该选择谁? 随着中国3G争夺的上演,一些超前的用户已经体验了3G的快感.但对大多数中国的消费者而言,在未来需要选择或者并不仅仅再是哪一家运营商,而是选择站到哪一个通信标准的阵营中去, ...

  9. 使用 Rest-Assured 测试 REST API

    现在,越来越多的 Web 应用转向了 RESTful 的架构,很多产品和应用暴露给用户的往往就是一组 REST API,这样有一个好处,用户可以根据需要,调用不同的 API,整合出自己的应用出来.从这 ...

最新文章

  1. 分享一个异步发送邮件的类
  2. pytest测试框架_聊聊 Python 的单元测试框架(三):最火的 pytest
  3. form表单提交数据编码方式和tomcat接受数据解码方式
  4. kafka增加服务器,kafka增加topic的备份数量
  5. acivity 横屏_Activity横竖屏切换时先看到横屏/竖屏再变换回竖屏/横屏
  6. java merge_java – OptimisticLockException当使用JPA merge()
  7. MySQL text类型的最大长度
  8. Linux添加相对库路径,Linux C编程(8) 使用相对路径加载动态库-rpath和$ORIGIN
  9. 常用的五种大数据分析方法
  10. 鼠标滑轮滚动到相应位置,对应位置的div触发一些效果实现方式
  11. JavaWeb项目实战一(Servlet+Jsp项目项目搭建及登录界面)
  12. 基于点云的骨骼感知三维人体形状重建
  13. linux更改445端口,windows连接非445端口(nginx转发)的samba服务卡顿
  14. 程序与算法的区别和内在联系(算法是什么?程序又是什么?)
  15. oracle 菜单不见了,桌面任务栏不见了 - 电脑任务栏不见了的解决办法 - 安全专题...
  16. 一种用于指导模拟 IC 布局的定制图神经网络模型
  17. js数组拆分成几个数组
  18. 无人机技术将从硬件创新转向自动化智能飞行
  19. SpringBoot+Vue项目毕业论文管理系统
  20. neovim初始化以及插件安装

热门文章

  1. html5 jpg转webp格式转换,JPEG和WebP格式图片的差别
  2. pytorch入门——tensorboard,transforms,dataset,dataloader,model,train,test
  3. 【图像处理】形态学及其它集合运算(Morphological and Other Set Operations)
  4. SNIFE 和 std::enable_if
  5. 2021年中国动物血浆制品及其衍生物市场趋势报告、技术动态创新及2027年市场预测
  6. linux下qt加载boost,信号槽的实现实例—— Qt 和 Boost
  7. 云原生是趋势吗?学习 K8s 和 Docker 的意义在哪里?
  8. 视频会议赛道狂奔一年,未来会议室的核心是互联互通、建设生态
  9. 字节跳动异构场景下的高可用建设实践
  10. 64 岁的 Python 之父:我不退休了!