VSCode搭建Asp.Net Core Web API开发设置

VS Code是最通用和最轻量级的代码编辑器之一,本篇博文将介绍如何通过设置VS Code以创建基于Asp.Net Core的Web API,包括创建新的解决方案和项目、添加Nuget包以及运行单元测试。

创建项目

  1. 打开VS Code并将任何空文件夹添加到工作区。添加后右键单击文件夹选择”在集成终端中打开”

  2. 在终端中使用命令创建一个名为stack_setup的新空解决方案

1
dotnet new sln --name stack_setup
  1. 用模板命令创建一个新项目
1
dotnet new webapi --name Stackup.Api
  1. 将项目添加到之前创建的解决方案中,确保终端仍指向解决方案文件夹
1
dotnet sln add .\Stackup.Api\Stackup.Api.csproj

构建和调试

  1. 使用命令将终端移动到项目目录
1
cd Stackup.API
  1. 运行命令进行编译
1
dotnet build
  1. 编译成功之后,启动项目
1
dotnet run
  1. 访问运行应用程序的URL(http://localhost:5065/swagger/index.html)就能看到正在运行的应用程序。
    应用程序

如果提示”Failed to determine the https port for redirect”是因为中间件必须有一个端口可以将不安全的请求重定向到HTTPS
参阅文档

包管理

Visual Studio最重要的功能之一是Nuget包管理器,它允许我们管理集成到代码中的各种NuGet包。在VSCode中也有多个扩展可以做类似的事情。

  • Auto-Using for C# => 借助于此自动从各种命名空间导入引用
  • C#扩展 => 构建类、接口、结构、控制器、枚举、API 控制器、Razor 页面和许多其他类型的代码,以及初始化构造函数
  • .NET Core Tools => 添加选项以直接运行和构建项目
  • .NET Core Test Explorer => 在 VS Code 中运行和调试单元测试

单元测试

.NET Core Test Explorer 扩展有助于直接在 VS Code 中运行所有类型的基于单元测试的项目。

  1. 创建一个新的测试项目并使用以下命令将其添加到解决方案中
1
2
dotnet new nunit -n Stackup.Api.Test
dotnet dotnet sln add .\Stackup.Api.Test\Stackup.Api.Test.csproj
  1. 以下命令在测试项目中添加主项目的引用
1
2
cd .\Stackup.Api.Test\
dotnet add reference ..\Stackup.Api\Stackup.Api.csproj
  1. 为了使我们的默认WeatherForecast控制器可测试,让我们稍微修改一下代码,将默认逻辑移至WeatherService。

  2. 新建Service文件夹,并创建新的接口IWeatherService

1
2
3
4
5
6
7
namespace Stackup.Api.Service
{
public interface IWeatherService
{
public IEnumerable<WeatherForecast> GetWeather();
}
}
  1. 创建新气象服务类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
namespace Stackup.Api.Service
{
public class WeatherService : IWeatherService
{
private static readonly string[] Summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};

public IEnumerable<WeatherForecast> GetWeather()
{
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
}).ToArray();
}
}
}

这里的GetWeather方法只是项目中生成的Controller默认代码的实现。我们只是将代码从 Controller 移动到服务,以便我们可以测试该服务。

  1. 更新WeatherForecast控制器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
using Microsoft.AspNetCore.Mvc;
using Stackup.Api.Service;

namespace Stackup.Api.Controllers;

[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
private readonly ILogger<WeatherForecastController> _logger;
IWeatherService _service;

public WeatherForecastController(ILogger<WeatherForecastController> logger, IWeatherService service)
{
_logger = logger;
_service = service;
}

[HttpGet(Name = "GetWeatherForecast")]
public IEnumerable<WeatherForecast> Get()
{
return _service.GetWeather();
}
}
  1. 更新Program.cs
1
builder.Services.AddSingleton<IWeatherService, WeatherService>();
  1. 在测试项目中添加一个新的类名WeatherServiceTest,并将以下代码添加到其中。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using Stackup.Api.Service;
public class WeatherServiceTest
{

IWeatherService serviceToTest;
[SetUp]

public void Setup()
{
serviceToTest = new WeatherService();
}

[Test]
public void WhenCalled_ReturnWeather()
{
var result = serviceToTest.GetWeather();
int count = result.Count();
Assert.AreEqual(count, 5);
Assert.Pass();
}
}
  1. 构建项目,然后在VS Code左侧面板中的测试选项卡,然后单击.Net Test Explorer,单击刷新图标,然后应显示新创建的测试,右键单击测试名称Run或Debug测试。
    测试结果

  2. 项目结构
    项目结构

结论

这篇博文帮助您设置开发环境以开始使用VSCode构建ASP.NET Core Web API项目,该编辑器不是一个完全集成的 IDE,与 Visual Studio 相比缺乏功能,但它是一个快速、轻量级的开发解决方案,可以启动和运行。