如何在30分钟内用C#编写REST API:分步指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

简介:用 C# 快速轻松构建 REST API

现代 Web 应用和移动服务的开发离不开 REST API。如果您想快速为项目搭建后端,C# 搭配 ASP.NET Core 框架是理想选择。凭借内置工具、极简配置和出色性能,您可以在短短 30 分钟内编写出一个功能完整的 REST API。

本文将逐步讲解如何创建一个用于管理任务列表 (Todo List) 的简单 API。您将学习如何配置项目、创建数据模型、实现包含 CRUD 操作的控制器,以及使用 Swagger 测试 API。所有代码示例均使用 C# (.NET 8) 编写。

即使您是 C# 新手,按照本文指导操作,也能在文章末尾获得一个可运行的 API。



1. 创建项目并配置环境

首先,请确保您已安装 .NET SDK(版本 8 或更高)。您可以从 官方网站 下载。安装完成后,打开终端或命令行。

使用以下命令创建一个新的 ASP.NET Core Web API 项目:

dotnet new webapi -n TodoApicd TodoApi

此命令将创建一个名为 TodoApi 的文件夹,其中包含基本的项目结构。里面已有文件 Program.cs(入口点)和用于存放未来控制器的 Controllers 文件夹。

在 Visual Studio、Visual Studio Code 或 Rider 中打开该项目。为简单起见,您也可以使用任何文本编辑器。

请确保 Program.cs 文件中包含 AddSwaggerGen() 和 UseSwagger() 的调用。Swagger 默认包含在模板中——这将简化测试。如果没有,请添加:

builder.Services.AddEndpointsApiExplorer();builder.Services.AddSwaggerGen();// ...app.UseSwagger();app.UseSwaggerUI();


2. 创建数据模型和临时存储

对于我们的 API,我们将任务存储在内存中 (in-memory)。在实际项目中,您会连接数据库,但对于演示 30 分钟解决方案来说,这已经足够了。

创建一个 Models 文件夹,并在其中创建文件 TodoItem.cs:

public class TodoItem{    public int Id { get; set; }    public string Title { get; set; } = string.Empty;    public bool IsCompleted { get; set; }}

现在,创建一个简单的服务仓库。在 Services 文件夹中,创建接口 ITodoService.cs 及其实现 TodoService.cs。这将便于将来切换到真实的数据库。

ITodoService.cs:

public interface ITodoService{    List<TodoItem> GetAll();    TodoItem? GetById(int id);    TodoItem Create(TodoItem item);    TodoItem? Update(int id, TodoItem item);    bool Delete(int id);}

TodoService.cs:

public class TodoService : ITodoService{    private readonly List<TodoItem> _items = new();    private int _nextId = 1;

public List<TodoItem> GetAll() => _items;

public TodoItem? GetById(int id) => _items.FirstOrDefault(i => i.Id == id);

public TodoItem Create(TodoItem item) { item.Id = _nextId++; _items.Add(item); return item; }

public TodoItem? Update(int id, TodoItem item) { var existing = GetById(id); if (existing == null) return null; existing.Title = item.Title; existing.IsCompleted = item.IsCompleted; return existing; }

public bool Delete(int id) { var item = GetById(id); if (item == null) return false; return _items.Remove(item); }}

在 Program.cs 的 DI 容器中注册该服务:

<                

博客

书籍推荐