P6-2 使用ASP.NET Core 开发Web API

使用ASP.NET Core 开发Web API


简单介绍

  • ASP.NET Core MVC是ASP.NET Core中进行网站开发的技术,一般应用于浏览器。但随着技术发展,现在访问服务不止是浏览器了,还有手机App、微信小程序、智能家电等都有和服务器端进行数据交互的需求
  • 浏览器和服务器端之间传递的主要是HTML,而手机App等客户端和服务器端之间主要传递的是Json等结构化的数据
  • 我们把提供结构化数据服务的接口叫做Web API

Web API项目的搭建

  • 搭建步骤如下图所示:
    • 搭建

Web API和MVC的对比

项目结构

  • ASP.NET Core Web API 项目的结构和ASP.NET Core MVC 项目的结构是非常类似的
    • 不同的是Web API项目没有Views文件夹
      • 因为Web API 直接返回的是结构化的数据,不需要提供展示数据的视图
    • 对比

控制器

  • Web API的控制器继承自ControllerBase,而MVC继承自Controller
    • ControllerControllerBase的子类
    • Controller类中包含View等和MVC中视图等相关的代码,所以Web API不需要
      1
      2
      WeatherForecastController : ControllerBase //Web API
      TestController : Controller//MVC
      MVC
      Web-API

运行项目,解读代码结构

  • 代码分析
    • 控制器添加API
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      namespace MyFirstWebApplication.Controllers
      {
      [ApiController]//Attribute---属性
      [Route("[controller]")]//设置路由规则,规则中[controller]代表控制器的名字,也就是WeatherForecast
      public class WeatherForecastController : ControllerBase
      {
      private static readonly string[] Summaries = new[]
      {
      "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
      };

      private readonly ILogger<WeatherForecastController> _logger;

      public WeatherForecastController(ILogger<WeatherForecastController> logger)
      {
      _logger = logger;
      }

      [HttpGet(Name = "GetWeatherForecast")]//发送Get请求接口
      public IEnumerable<WeatherForecast> Get()//Get方法返回对象会被自动进行Json序列化返回给客户端
      {
      return Enumerable.Range(1, 5).Select(index => new WeatherForecast
      {
      Date = DateTime.Now.AddDays(index),
      TemperatureC = Random.Shared.Next(-20, 55),
      Summary = Summaries[Random.Shared.Next(Summaries.Length)]
      })
      .ToArray();
      }
      }
      }
  • 示例

swagger接口文档

  • swagger页面就是我们创建项目的时候勾选的【启用OpenAPI支持】
  • 这个页面无论对于接口的开发人员还是接口的使用者,使用起来都非常方便
    • 开发人员:他们不需要编写调用接口的代码就可以对接口进行在线测试
    • 调用者:他们可以通过页面上的接口信息,就能知道如何调用这个接口,不需要再去询问接口的开发人员

Post、Put等操作方法

  • 1、为控制器类增加一个标注了[HttpPost]的操作方法。
  • 2、把用户提交的内容保存到文本文件中,方法的返回值为保存的文件名。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    [HttpGet]
    public Person GetPerson()
    {
    return new Person("Zane", 18);
    }
    [HttpPost]
    public string SaveNote(SaveNoteRequest req)
    {
    string filename = $"{req.Title}.txt";
    System.IO.File.WriteAllText(filename, req.Content);
    return filename;
    }
  • 3、测试接口。
    • 网址模仿Get请求
    • 模仿Get

P6-2 使用ASP.NET Core 开发Web API
http://example.com/2024/09/29/Net Core2022教程/第6章:ASP.NET Core Web API基础/P6-2 使用ASP.NET Core 开发Web Api/
Author
John Doe
Posted on
September 29, 2024
Licensed under