小工具知识网

当前位置: 首页 > 行业知识 > 使用 ASP.NET Core 8 实现简单的Web API CRUD操作

行业知识

使用 ASP.NET Core 8 实现简单的Web API CRUD操作

2026-11-03 23:22:26 来源:互联网转载

简介

使用使用 ASP.NET Core 8 创建一个增删查改API,这个示例中,将展示一个简单但是完整的真实案例

目录

简介

前置要求

什么是API?

什么是RESTful API?

什么是CRUD?

.NET 8 Web API

总结


前置要求

Visual Studio 2022 或者 Visual Studio Code(安装了.NET 8 SDK)

什么是API?

  • API是Application Programming Interface(应用程序的缩写)
  • API定义了与其他软件系统通信时必须遵循的规则
  • 开发人员公开api,以便其他应用程序可以以编程方式与他们的应用程序通信

    什么是RESTful API?

    说来话长,总之就是某种特定风格的API

    什么是CRUD?

    CRUD是Create, Read, Update, and Delete的缩写,就是所谓的增删查改

    .NET 8 Web API

    1.打开Visual Studio 2022创建一个新项目

    2.选择ASP.NET Core Web API模板,然后点击下一步

    3.输入项目名称及位置并勾选“将解决方案和项目放在同一目录中”,然后点击下一步,如图所示

    4.在接下来出现的界面中选择依照图示选择相关配置,并点击创建

    至此,Visual Studio就帮我们创建了一个Web API的脚手架

    5.删除项目中Controllers文件夹下面的WeatherForecastController.cs文件,这是项目模板为我们预定义的一个API文件,现在我们不需要它.

    6.删除了WeatherForecastController.cs文件后,目前Controllers文件夹是空的,我们右键Controllers文件夹,选择“添加”  -  “控制器” 给它添加一个新的控制器,如图所示。

    7.选择 “通用” - “API” - “API控制器 - 空”,点击“添加” 如图所示

    8.在接下来的界面中,再次确保我们选中的是“API 控制器 - 空”,并输入名称如图所示,然后添加

    此时Controllers文件夹下就会出现我们刚刚创建的文件如图所示

    9.接下来为我们的项目添加两个文件夹,分别是

    • Model
    • Services

      办法如图所示

      然后

      现在我们的文件结构应该是这样子

      10.右键点击Model文件夹,然后选择“添加” - “新建项”,如图所示

      在弹出来的窗口中输入文件的名字OurHero.cs如图所示,然后点击添加

      11.在OurHero.cs文件中,填入如下内容:

      //OurHero.csnamespace SimpleWebApi.Model{    public class OurHero    {        public int Id { get; set; }        public required string FirstName {  get; set; }        public string LastName { get; set; }=string.Empty;        public bool isActive { get; set; } = true;    }}

      12.再在Model文件夹中添加一个AddUpdateOurHero.cs文件,方法同第10步操作一样,并添加如下内容,AddUpdateOurHero模型用来添加或更新英雄列表

      // AddUpdateOurHero.csnamespace SimpleWebApi.Model{    public class AddUpdateOurHero    {        public required string FirstName {  get; set; }        public string LastName { get; set; } = string.Empty;        public bool isActive { get; set; } = true;    }}

      13.创建Service文件,右键Services文件夹,创建一个名为IOurHeroService.cs的文件,方法同第10步,并在IOurHeroService.cs文件中添加如下内容,请注意,我们现在要创建的是interface而不是class,Visual Studio应该自动生成public interface... 而不是 public class... ,如果没有,请自行修正

      //IOurHeroService.csusing SimpleWebApi.Model;namespace SimpleWebApi.Services{    public interface IOurHeroService    {        List GetAllHeros(bool? isActive);        OurHero? GetHerosByID(int id);        OurHero AddOurHero(AddUpdateOurHero obj);        OurHero? UpdateOurHero(int id, AddUpdateOurHero obj);        bool DeleteHerosByID(int id);    }}

      14.再在Services文件夹下创建一个名为OurHeroService.cs的文件,方法同第10步,并添加以下内容,该class实现了IOurHeroService接口

      // OurHeroService.csusing SimpleWebApi.Model;namespace SimpleWebApi.Services{    public class OurHeroService : IOurHeroService    {        private readonly List _ourHeroesList;        public OurHeroService()        {            _ourHeroesList = new List()            {                new OurHero()                {                    Id=1,                    FirstName="孙",                    LastName="悟空",                    isActive=true,                }            };        }        public OurHero AddOurHero(AddUpdateOurHero obj)        {            var addHero = new OurHero()            {                Id = _ourHeroesList.Max(hero => hero.Id) + 1,                FirstName = obj.FirstName,                LastName = obj.LastName,                isActive = obj.isActive,            };            _ourHeroesList.Add(addHero);            return addHero;        }        public bool DeleteHerosByID(int id)        {            var ourHeroIndex = _ourHeroesList.FindIndex(index => index.Id == id);            if (ourHeroIndex >= 0)            {                _ourHeroesList.RemoveAt(ourHeroIndex);            }            return ourHeroIndex >= 0;        }        public List GetAllHeros(bool? isActive)        {            return isActive == null ? _ourHeroesList : _ourHeroesList.Where(hero => hero.isActive == isActive).ToList();        }        public OurHero? GetHerosByID(int id)        {            return _ourHeroesList.FirstOrDefault(hero => hero.Id == id);        }        public OurHero? UpdateOurHero(int id, AddUpdateOurHero obj)        {            var ourHeroIndex = _ourHeroesList.FindIndex(index => index.Id == id);            if (ourHeroIndex > 0)            {                var hero = _ourHeroesList[ourHeroIndex];                hero.FirstName = obj.FirstName;                hero.LastName = obj.LastName;                hero.isActive = obj.isActive;                _ourHeroesList[ourHeroIndex] = hero;                return hero;            }            else            {                return null;            }        }    }}

      15.修改项目文件根目录下的Program.cs文件如下列所示内容

      // Program.csusing SimpleWebApi.Services;var builder = WebApplication.CreateBuilder(args);//*********************** Add services to the container.***********************builder.Services.AddSingleton();//*********************** Add services to the container end.***********************builder.Services.AddControllers();// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbucklebuilder.Services.AddEndpointsApiExplorer();builder.Services.AddSwaggerGen();var app = builder.Build();// Configure the HTTP request pipeline.if (app.Environment.IsDevelopment()){    app.UseSwagger();    app.UseSwaggerUI();}app.UseHttpsRedirection();app.UseAuthorization();app.MapControllers();app.Run();

      16.将IOurHeroService注入到OurHeroController,打开Controllers文件夹下的OurHeroController.cs文件并将其修改为如下内容

      // OurHeroController.csusing SimpleWebApi.Services;using Microsoft.AspNetCore.Http;using Microsoft.AspNetCore.Mvc;namespace SimpleWebApi.Controllers{    [Route("api/[controller]")]    [ApiController]    public class OurHeroController : ControllerBase    {        private readonly IOurHeroService _heroService;        public OurHeroController(IOurHeroService heroService)        {            _heroService = heroService;        }    }}

      17.再次修改OurHeroController.cs文件,加入Get,Post,Put,Delete这些action方法,完整的代码如下

      //OurHeroController.csusing Microsoft.AspNetCore.Mvc;using SimpleWebApi.Model;using SimpleWebApi.Services;namespace SimpleWebApi.Controllers{    [Route("api/[controller]")]    [ApiController]    public class OurHeroController : ControllerBase    {        private readonly IOurHeroService _heroService;        public OurHeroController(IOurHeroService heroService)        {            _heroService = heroService;        }        [HttpGet]        public IActionResult Get([FromQuery] bool? isActive = null)        {            return Ok(_heroService.GetAllHeros(isActive));        }        [HttpGet]        [Route("{id}")]        public IActionResult Get(int id)        {            var hero = _heroService.GetHerosByID(id);            if (hero == null)            {                return NotFound();            }            return Ok(hero);        }        [HttpPost]        public IActionResult Post(AddUpdateOurHero heroObject)        {            var hero = _heroService.AddOurHero(heroObject);            if (hero == null)            {                return BadRequest();            }            return Ok(new            {                message = "Super Hero Created Successfully!!!",                id = hero!.Id            });        }        [HttpPut]        [Route("{id}")]        public IActionResult Put([FromRoute] int id, [FromBody] AddUpdateOurHero heroObject)        {            var hero = _heroService.UpdateOurHero(id, heroObject);            if (hero == null)            {                return NotFound();            }            return Ok(new            {                message = "Super Hero Updated Successfully!!!",                id = hero!.Id            });        }        [HttpDelete]        [Route("{id}")]        public IActionResult Delete([FromRoute] int id)        {            if (!_heroService.DeleteHerosByID(id))            {                return NotFound();            }            return Ok(new            {                message = "Super Hero Deleted Successfully!!!",                id = id            });        }    }}

      18.运行程序,在Visual Studio中按F5运行我们的App,浏览器会自动打开Swagger页面,点击 GET API/OurHero  , 然后再依次点击Try it out 和 Execute就可以看到我们的Hero列表

      你也可以在页面中尝试增删查改的其他操作

      总结

      这就是一个完整的ASP.NET Core 8 In-memory数据的增删查改示例程序,如果感兴趣,可以把它集成到你的前端项目中。感谢阅读

上一篇:进不去的服务器怎么处理?

下一篇:宝塔访问面板卡顿问题解决方案