这是一款中国人自己开发的插件,有兴趣可以关注下作者本人。之前介绍过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,
"firstName": "Juergen",
"lastName": "Gutsch",
"email": "juergen@example.com",
"telephone": "08150815",
"street": "Mainstr. 2",
"zip": "12345",
"city": "Smallville"
}
如果您单击GET请求的CodeLens链接,这就是VSCode中的样子:
现在,您可以通过这种方式测试所有API端点。
5、小结
实际上,这不仅能测试REST api,您可以通过这种方式测试任何类型的HTTP请求。您甚至可以将二进制数据(例如图像)发送到端点。
对于VSCode来说,这是一个非常不错的扩展,我敢肯定,我只会在没有安装VS Code的环境中使用Fiddler或Postman。
说了半天,你心动了吗?心动不如行动,关注楼主,不迷路!