VSCode的Rest扩展尝试——极简Api测试方案

这是一款中国人自己开发的插件,有兴趣可以关注下作者本人。之前介绍过webapi的测试工具,有Postman、Fiddler等,现在是时候拜托它们的时候了。

1、安装

可以在Visual Studio市场或VS Code的扩展资源管理器中找到该扩展:

https://marketplace.visualstudio.com/items?itemName=humao.rest-client
如果您点击此链接,您将找到有关扩展,有非常不错的如何工作以及如何使用的文档。这也意味着这篇文章是没有用的,除了您想阅读快速概述;-)

在这里插入图片描述

REST Client扩展的源代码托管在GitHub上:
https://github.com/Huachao/vscode-restclient

该扩展程序得到积极维护,下载数非常大,并由250多人提供了很棒的评级(5分中的5.0分)

2、它能解决什么?

与Fiddler和Postman相比,它绝对是简约的。没有炫目且功能完善的UI。尽管Fidler功能齐全,但Postman的UI更好,更轻松,更直观,但是REST Client完全不需要UI,除了VSCode shell和纯文本编辑器。

和Fiddler和Postman无法轻松共享请求配置不同,REST客户端使用* .http或* .rest扩展名将请求配置存储在文本文件中,扩展名可以提交给源代码存储库并与整个团队共享。

在这里插入图片描述

3、让我们看看它是如何工作的

为了在演示中对其进行测试,让我们创建一个新的Web API项目,转到项目目录,然后打开VSCode:

dotnet new webapi -n RestClient -o RestClient
cd RestClient
code .

该项目已经包含一个Web API控制器。我将在REST Client的第一个小测试中使用它。稍后我将在博客文章中创建并使用更复杂的控制器

为了将* .http文件放在一个位置,我创建了一个ApiTest文件夹并将其放置WeatherForecast.http在其中。我不确定将此类文件放入项目是否有意义,因为这些文件不会投入生产。我认为,在现实世界的项目中,我会将文件放置在实际项目文件夹之外的某个位置,但要放在源代码存储库中。让我们暂时保留它:

在这里插入图片描述


我已经将以下行放入该文件中:

GET https://localhost:5001/WeatherForecast/ HTTP/1.1

这只是带有文件扩展名的纯文本文件中的简单文本行,*.http是REST Client扩展的一部分,在解析它时具有一些很酷的魔术:

在顶部边框上,您可以看到REST Client扩展支持文件结构内部的导航。这很酷。在该行上方,它还将一个CodeLens可操作链接添加到已配置的请求中以发送该请求。

首先,通过按F5或dotnet run在Shell中使用启动项目。

如果项目正在运行,则可以单击“发送请求代码镜头”链接,然后查看会发生什么。

在这里插入图片描述


它将在VSCode中的新选项卡组中打开响应,并显示响应标题和响应内容

4、更复杂的例子

我创建了另一个处理人员的API控制器。在PersonController使用GenFu创建假的用户。方法POST,PUT和DELETE并没有真正做任何事情,但是控制器可以很好地被测试。

using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc;

using GenFu;

using RestClient.Models;

namespace RestClient.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class PersonController : ControllerBase
    {

        [HttpGet]
        public ActionResult<IEnumerable<Person>> Get()
        {
            return A.ListOf<Person>(15);
        }

        [HttpGet("{id:int}")]
        public ActionResult<Person> Get(int id)
        {
            var person = A.New<Person>(new Person { Id = id });
            return person;
        }

        [HttpPost]
        public ActionResult Post(Person person)
        {
            return Ok(person);
        }

        [HttpPut("{id:int}")]
        public ActionResult Put(int id, Person person)
        {
            return Ok(person);

        }

        [HttpDelete("{id:int}")]
        public ActionResult Delete(int id)
        {
            return Ok(id);
        }
    }
}

该Person模型很简单:

namespace RestClient.Models
{
    public class Person
    {
        public int Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Email { get; set; }
        public string Telephone { get; set; }
        public string Street { get; set; }
        public string Zip { get; set; }
        public string City { get; set; }
    }
}

如果现在启动项目,则将在Web API项目中已配置的Swagger UI中看到新的端点。调用以下URL以查看Swagger UI:https://localhost:5001/swagger/ index.html

在这里插入图片描述


好的。开始吧。我创建了一个名为新文件Person.http中ApiTests的文件夹。您可以将多个REST Client请求配置添加到一个文件中。

我们不需要两个GET端点和DELETE端点的Swagger UI,因为它们是简单的端点,并且看起来与中的相同WeatherForecast.http:

GET https://localhost:5001/Person/ HTTP/1.1

###

GET https://localhost:5001/Person/2 HTTP/1.1

### 

DELETE https://localhost:5001/Person/2 HTTP/1.1

POST请求稍微复杂一点

如果现在/Person在Swagger UI中打开POST部分并尝试请求,您将获得REST Client所需的所有信息:

在这里插入图片描述


在http文件中,它将如下所示:

POST https://localhost:5001/Person/ HTTP/1.1
content-type: application/json

{
  "id": 0,
  "firstName": "Juergen",
  "lastName": "Gutsch",
  "email": "juergen@example.com",
  "telephone": "08150815",
  "street": "Mainstr. 2",
  "zip": "12345",
  "city": "Smallville"
}

您可以对PUT请求执行相同的操作:

PUT https://localhost:5001/Person/2 HTTP/1.1
content-type: application/json

{
  "id": 2,
  "city": "Smallville"
}

如果您单击GET请求的CodeLens链接,这就是VSCode中的样子:

在这里插入图片描述


现在,您可以通过这种方式测试所有API端点。

5、小结

实际上,这不仅能测试REST api,您可以通过这种方式测试任何类型的HTTP请求。您甚至可以将二进制数据(例如图像)发送到端点。

对于VSCode来说,这是一个非常不错的扩展,我敢肯定,我只会在没有安装VS Code的环境中使用Fiddler或Postman。

说了半天,你心动了吗?心动不如行动,关注楼主,不迷路!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


kindeditor4.x代码高亮功能默认使用的是prettify插件,prettify是Google提供的一款源代码语法高亮着色器,它提供一种简单的形式来着色HTML页面上的程序代码,实现方式如下: 首先在编辑器里面插入javascript代码: 确定后会在编辑器插入这样的代码: <pre
这一篇我将介绍如何让kindeditor4.x整合SyntaxHighlighter代码高亮,因为SyntaxHighlighter的应用非常广泛,所以将kindeditor默认的prettify替换为SyntaxHighlighter代码高亮插件 上一篇“让kindeditor显示高亮代码”中已经
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面
如何用js控制图片放大缩小
JS怎么获取当前时间戳
JS如何判断对象是否为数组
JS怎么获取图片当前宽高
JS对象如何转为json格式字符串
JS怎么获取图片原始宽高
怎么在click事件中调用多个js函数
js如何往数组中添加新元素
js如何拆分字符串
JS怎么对数组内元素进行求和
JS如何判断屏幕大小
js怎么解析json数据
js如何实时获取浏览器窗口大小
原生JS实现别踩白块小游戏(五)
原生JS实现别踩白块小游戏(一)