按照目前的软件开发发展趋势中,不管是前后端分离还是提供数据服务,WebApi使用的越来越广泛,而且.NET Core也是我们.NET开发人员未来发展的趋势,所以说学会使用.NET Core Api是非常有必要的。
本人作为一个.NET菜鸟,正在慢慢的学习中,将学到的一步一步记录下来。
一、创建项目
打开VS2019,新建一个ASP.NET Core Web 应用程序。
输入项目名、选择路径创建。
选择.NET Core 我这里用的是.NET Core 2.2版本,选中API,把右边的选中取消。
创建的项目目录内容如下。
二、编辑控制器
打开Controllers文件夹,这里我直接使用默认创建的ValuesController控制器。(其实是因为这是个例子我懒的再建了( ̄. ̄))
ValuesController控制器默认内容如下。共有四个HTTP方法,分别为 Get、Post、Put 和 Delete。
把该控制器的内容重新写一下,将路由设置为api/控制器/方法(api/[controller]/[action])。按照常用Get 和 Post两个请求,写了两个Get方法和一个Post方法,一个参数类。
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; namespace FirstApi.Controllers { //路由设置 [Route("api/[controller]/[action]")] [ApiController] public class ValuesController : ControllerBase { /// <summary> /// 获取文本 /// </summary> /// <returns></returns> [HttpGet] public ActionResult<string> Get() { return "Hello World!"; } /// <summary> /// 两数相加 /// </summary> /// <param>第一个数</param> /// <param>第二个数</param> /// <returns></returns> [HttpGet] public ActionResult<int> Sum(int num1,int num2) { return num1 + num2; } /// <summary> /// 两数相减 /// </summary> /// <param>参数</param> /// <returns></returns> [HttpPost] public ActionResult<int> Subtract(Param param) { int result = param.num1 - param.num2; return result; } } /// <summary> /// 参数 /// </summary> public class Param { /// <summary> /// 第一个数 /// </summary> public int num1 { get; set; } /// <summary> /// 第二个数 /// </summary> public int num2 { get; set; } } }
然后右键项目→属性→调试,将启动浏览器默认指向为第一个Get方法。
调试运行,访问第一个方法,返回结果。
访问第二个方法加上参数,得到结果。
第三个方法是Post请求,无法直接输入,可以用其他方式实现。
三、搭建Swagger
这样WebApi 就简单实现了,不过这样不容易管理。为了更好的管理和测试我们的接口,我这里使用了Swagger框架。
Swagger是什么?Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的 Web 服务。
右键项目,点击管理NuGet程序包。
切换到浏览,搜索“Swashbuckle.AspNetCore”,安装。
安装完成之后,编辑Startup.cs文件。
引用下面三个命名空间。
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; namespace FirstApi.Controllers { //路由设置 [Route("api/[controller]/[action]")] [ApiController] public class ValuesController : ControllerBase { /// <summary> /// 获取文本 /// </summary> /// <returns></returns> [HttpGet] public ActionResult<string> Get() { return "Hello World!"; } /// <summary> /// 两数相加 /// </summary> /// <param>第一个数</param> /// <param>第二个数</param> /// <returns></returns> [HttpGet] public ActionResult<int> Sum(int num1,int num2) { return num1 + num2; } /// <summary> /// 两数相减 /// </summary> /// <param>参数</param> /// <returns></returns> [HttpPost] public ActionResult<int> Subtract(Param param) { int result = param.num1 - param.num2; return result; } } /// <summary> /// 参数 /// </summary> public class Param { /// <summary> /// 第一个数 /// </summary> public int num1 { get; set; } /// <summary> /// 第二个数 /// </summary> public int num2 { get; set; } } }
在ConfigureServices方法里加入下面的代码,注册Swagger生成器,定义一个文档,设置xml文档的注释路径,。