使用 ASP.NET Core 6 构建 RESTful Web API - Medium

作者:API传播员 · 2025-11-22 · 阅读时间:5分钟
本文详细介绍了如何使用 ASP.NET Core 6 构建 RESTful Web API,涵盖 REST 架构风格、项目初始化、EF Core 数据库管理、CRUD 操作实现以及 Swagger UI 测试。通过具体示例,帮助开发者掌握构建高效 Web API 的完整流程,包括使用 ASP.NET Core 6 和 EF Core 进行数据库操作。

什么是 REST?

REST(Representational State Transfer,表述性状态转移)是一种架构风格,旨在为 Web 上的计算机系统之间提供标准化的通信方式,使系统之间的交互更加简单和高效。REST 的核心特点包括:

  • 客户端-服务器架构:客户端和服务器可以独立开发,彼此之间没有依赖关系。
  • 无状态性:每次请求都包含完成请求所需的所有信息,服务器不会存储客户端的会话状态。
  • 统一接口:通过类似 URI 的目录结构公开资源。
  • 资源表示:使用 JSON 或 XML 格式传递数据对象及其属性。

REST 通常与 HTTP 协议结合使用,主要通过以下四种 HTTP 动词与资源交互:

  • GET:检索特定资源或资源集合。
  • POST:创建新资源。
  • PUT:更新特定资源。
  • DELETE:删除特定资源。

REST 的简单性和灵活性使其在 Web 开发中广泛应用,逐渐取代了基于 SOAP 的接口设计。


创建 ASP.NET Core 6 Web API 项目

初始化项目

  1. 打开 Visual Studio 2022,选择 创建新项目
  2. 选择 ASP.NET Core Web API 模板。
  3. 为项目命名并选择 .NET 6.0 作为框架。

默认项目结构

创建项目后,默认会包含以下内容:

  • Program.cs:已自动添加 Swagger 支持。
  • Swashbuckle.AspNetCore:作为依赖项的 NuGet 包。

运行项目(Ctrl + F5)后,浏览器会显示 Swagger UI,您可以通过它测试默认的 API 方法。


使用实体框架核心(EF Core)管理数据库

数据模型和数据库上下文

  1. 创建数据模型类,并添加以下属性:

    public int Id { get; set; }
    public string Title { get; set; }
    public string Genre { get; set; }
    public int Year { get; set; }
  2. 创建数据库上下文类:

    public class MovieContext : DbContext
    {
       public MovieContext(DbContextOptions options) : base(options) { }
       public DbSet Movies { get; set; } = null!;
    }
  3. appsettings.json 中添加连接字符串:

    "ConnectionStrings": {
       "DefaultConnection": "Server=(localdb)\mssqllocaldb;Database=MovieDB;Trusted_Connection=True;"
    }
  4. Program.cs 中注册数据库上下文:

    builder.Services.AddDbContext(options =>
       options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));

使用迁移创建数据库

  1. 打开 包管理器控制台(PMC),运行以下命令:

    Add-Migration InitialCreate
    Update-Database
  2. 数据库和表会自动创建,您可以通过 SQL Server 对象资源管理器 查看。


创建 Movies API 控制器

添加控制器

  1. Controllers 文件夹中,右键选择 添加 > 控制器
  2. 选择 API 控制器 – 空 模板,为控制器命名为 MoviesController

CRUD 操作

GET 方法

以下代码实现了两个 GET 端点:

  • 获取所有电影记录:https://localhost:{port}/api/movies
  • 获取特定电影记录:https://localhost:{port}/api/movies/{id}
[HttpGet]
public async Task<ActionResult<IEnumerable>> GetMovies()
{
    return await _context.Movies.ToListAsync();
}

[HttpGet("{id}")]
public async Task<ActionResult> GetMovie(int id)
{
    var movie = await _context.Movies.FindAsync(id);
    if (movie == null)
    {
        return NotFound();
    }
    return movie;
}

POST 方法

以下代码用于创建新的电影记录:

[HttpPost]
public async Task<ActionResult> PostMovie(Movie movie)
{
    _context.Movies.Add(movie);
    await _context.SaveChangesAsync();

    return CreatedAtAction(nameof(GetMovie), new { id = movie.Id }, movie);
}

PUT 方法

以下代码用于更新现有的电影记录:

[HttpPut("{id}")]
public async Task PutMovie(int id, Movie movie)
{
    if (id != movie.Id)
    {
        return BadRequest();
    }

    _context.Entry(movie).State = EntityState.Modified;

    try
    {
        await _context.SaveChangesAsync();
    }
    catch (DbUpdateConcurrencyException)
    {
        if (!_context.Movies.Any(e => e.Id == id))
        {
            return NotFound();
        }
        else
        {
            throw;
        }
    }

    return NoContent();
}

DELETE 方法

以下代码用于删除指定的电影记录:

[HttpDelete("{id}")]
public async Task DeleteMovie(int id)
{
    var movie = await _context.Movies.FindAsync(id);
    if (movie == null)
    {
        return NotFound();
    }

    _context.Movies.Remove(movie);
    await _context.SaveChangesAsync();

    return NoContent();
}

测试 API

使用 Swagger UI 测试

  1. 启动项目(Ctrl + F5),打开 Swagger UI。
  2. 测试各个端点:
    • GET:查看所有电影或特定电影。
    • POST:添加新电影。
    • PUT:更新电影信息。
    • DELETE:删除电影记录。

验证数据库

通过 SQL Server 对象资源管理器 查看数据库,验证数据的正确性。


总结

本文介绍了如何使用 ASP.NET Core 6 和实体框架核心(EF Core)构建一个 RESTful Web API。通过实现 CRUD 操作,您可以轻松管理存储在 SQL Server 数据库中的电影记录。借助 Swagger UI,您可以快速测试 API 的功能。希望本文对您构建 Web API 项目有所帮助!

原文链接: https://medium.com/net-core/build-a-restful-web-api-with-asp-net-core-6-30747197e229