.NET Core 构建Rest服务实验手册(一)

本系列文章演示如何用 .net core 构建 Rest 服务。 如果对相同示例在Java平台的实现感兴趣,可以浏览: Spring Boot 构建Rest服务实验手册(一) 系列。

.NET Core 简介

.NET Core 是开放源代码通用开发平台,由 Microsoft 和 .NET 社区在 GitHub 上共同维护。它具有以下特性:

  1. 跨平台: 可以在 Windows、macOS 和 Linux 操作系统上运行。
  2. 跨体系结构保持一致: 在多个体系结构(包括 x64、x86 和 ARM)上以相同的行为运行代码。
  3. 命令行工具: 包括可用于本地开发和持续集成方案中的易于使用的命令行工具。
  4. 部署灵活: 可以包含在应用或已安装的并行(用户或系统范围安装)中。 可搭配 Docker 容器使用。
  5. 兼容性: .NET Core 通过 .NET Standard与 .NET Framework、Xamarin 和 Mono 兼容。
  6. 开放源代码: .NET Core 平台是开放源代码,使用 MIT 和 Apache 2 许可证。 .NET Core 是一个 .NET Foundation 项目。
  7. 由 Microsoft 支持: .NET Core 由 Microsoft 依据 .NET Core 支持提供支持。

简单来说,就是传统.NET 开发人员可以快乐的用已有的.NET技能构建跨平台的服务端应用了。

安装环境

本系列使用 .NET Core SDK 和 VS Code 作为主要的开发工具

  1. 安装 .NET Core SDK

官网下载 .NET Core SDK。本文中采用的是 SDK for Win64 2.2.401版。下载后进行安装,全部按默认选项进行安装即可。

安装完成后,可以打开一个命令行(CMD)窗口,输入以下命令查看安装的版本并验证安装是否正确

1
dotnet --version

如果安装正常,系统会显示安装的版本号。

  1. 安装 VS Code

直接官网下载最新的版本。下载后直接运行文件进行安装

构建初始项目

dotnet 命令行程序提供了一个 new 指令来建立新的项目,并提供了多种项目目标供选择

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
模板                                                短名称                语言                标记
----------------------------------------------------------------------------------------------------------------------------
Console Application console [C#], F#, VB Common/Console
Class library classlib [C#], F#, VB Common/Library
Unit Test Project mstest [C#], F#, VB Test/MSTest
NUnit 3 Test Project nunit [C#], F#, VB Test/NUnit
NUnit 3 Test Item nunit-test [C#], F#, VB Test/NUnit
xUnit Test Project xunit [C#], F#, VB Test/xUnit
Razor Page page [C#] Web/ASP.NET
MVC ViewImports viewimports [C#] Web/ASP.NET
MVC ViewStart viewstart [C#] Web/ASP.NET
ASP.NET Core Empty web [C#], F# Web/Empty
ASP.NET Core Web App (Model-View-Controller) mvc [C#], F# Web/MVC
ASP.NET Core Web App webapp [C#] Web/MVC/Razor Pages
ASP.NET Core with Angular angular [C#] Web/MVC/SPA
ASP.NET Core with React.js react [C#] Web/MVC/SPA
ASP.NET Core with React.js and Redux reactredux [C#] Web/MVC/SPA
Razor Class Library razorclasslib [C#] Web/Razor/Library/Razor Class Library
ASP.NET Core Web API webapi [C#], F# Web/WebAPI
global.json file globaljson Config
NuGet Config nugetconfig Config
Web Config webconfig Config
Solution File sln Solution

在本示例中,选择构建 webapi 类型的项目。因此执行以下命令:

1
dotnet new webapi -n TodoApi

TodoApi 是项目名称,dotnet 命令在在当前目录下用项目名称建立一个目录。 进入目录,并打开 VS Code

1
2
cd TodoApi
code .

注意:第一次打开C#的程序时,VS Code 会提示需要安装C#的插件,选择安装即可(需要联网)

运行程序

在 VS Code 中选择打开一个新的终端, 在VS Code 的菜单上选择 Terminal -> New Terminal

执行 run 命令以运行程序

1
dotnet run

如果系统启动正常,会输出

1
2
3
4
5
6
7
8
9
10
11
info: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[0]
User profile is available. Using 'C:\Users\stu\AppData\Local\ASP.NET\DataProtection-Keys' as key repository and Windows DPAPI to encrypt keys at rest.
info: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[58]
Creating key {dcfdb923-5055-44f6-97ff-b1ce2504c329} with creation date 2019-08-17 13:22:26Z, activation date 2019-08-17 13:22:26Z, and expiration date 2019-11-15 13:22:26Z.
info: Microsoft.AspNetCore.DataProtection.Repositories.FileSystemXmlRepository[39]
Writing data to file 'C:\Users\stu\AppData\Local\ASP.NET\DataProtection-Keys\key-dcfdb923-5055-44f6-97ff-b1ce2504c329.xml'.
Hosting environment: Development
Content root path: D:\TodoApi
Now listening on: https://localhost:5001
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.

可以看到,服务器已经正常启动并在 5000(http) 及 5001 (https) 两个端口进行监听。

打开浏览器,在地址栏中输入URL: https://localhost:5001/api/values,

如果看到以下的数据显示在浏览器中,则说明 Api 服务器已经正常运作。

[“value1”,”value2”]

.NetCore 3.x 模板的更新

在 .NetCore SDK 3.x 后,生成的项目目标发生了变化,不再有 ValuesController, 而是生成了一个 WeatherForecastController 作为样例, Route 也改为: [Route(“[controller]”)], 因此,项目运行后访问的地址也改为:

1
https://localhost:5001/weatherForecast

下一步

下一篇文章 中,我们将在项目中扩展逐步扩展自己的 API

本文标题:.NET Core 构建Rest服务实验手册(一)

文章作者:晨星

发布时间:2019年08月17日 - 20:08

最后更新:2020年09月16日 - 08:09

原始链接:https://www.mls-tech.info/dotnet/aspnet-core-practice-manual-1/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。