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

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

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

开始课程

简介:用C#创建REST API其实很简单

使用ASP.NET Core在C#中创建现代REST API是后端开发中最常见的任务之一。许多初学者认为编写一个完整的API需要数周的准备时间。实际上,使用正确的工具,您可以在短短30分钟内创建一个可运行的C# REST API。

在本文中,我们将从零开始实践如何用C#编写REST API。我们将创建一个简单的微服务来管理任务列表(Todo List),使用ASP.NET Core的内置功能。您将学习如何配置路由、实现CRUD操作以及通过Swagger UI测试API。



1. 5分钟完成项目配置

首先,请确保您已安装.NET SDK 6.0或更高版本。如果没有,请从Microsoft官方网站下载。打开终端并执行以下命令:



dotnet new webapi -n TodoApicd TodoApicode .


这些命令将创建一个新的Web API项目并在Visual Studio Code中打开它。项目结构包含几个重要文件:

  • Program.cs — 入口点和服务配置
  • Controllers/ — API控制器文件夹
  • appsettings.json — 配置文件


默认情况下,项目已包含一个示例控制器WeatherForecastController。我们将删除它并创建自己的控制器。



重要提示:请确保在Program.cs文件中包含builder.Services.AddControllers();和app.MapControllers();这两行代码。这是C# REST API的标准配置。



2. 创建数据模型和控制器(10分钟)

首先创建数据模型。在项目的根文件夹中创建一个Models文件夹,并在其中添加TodoItem.cs文件:



public class TodoItem{    public int Id { get; set; }    public string Title { get; set; } = string.Empty;    public bool IsComplete { get; set; }    public DateTime CreatedAt { get; set; } = DateTime.UtcNow;}


现在创建控制器。在Controllers文件夹中添加TodoController.cs文件。这是我们的C# REST API的核心:



[ApiController][Route("api/[controller]")]public class TodoController : ControllerBase{    private static List<TodoItem> _todos = new();    private static int _nextId = 1;

[HttpGet] public IActionResult GetAll() { return Ok(_todos); }

[HttpGet("{id}")] public IActionResult GetById(int id) { var todo = _todos.FirstOrDefault(t => t.Id == id); if (todo == null) return NotFound(); return Ok(todo); }

[HttpPost] public IActionResult Create(TodoItem item) { item.Id = _nextId++; _todos.Add(item); return CreatedAtAction(nameof(GetById), new { id = item.Id }, item); }

[HttpPut("{id}")] public IActionResult Update(int id, TodoItem item) { var existing = _todos.FirstOrDefault(t => t.Id == id); if (existing == null) return NotFound(); existing.Title = item.Title; existing.IsComplete = item.IsComplete; return NoContent(); }

[HttpDelete("{id}")] public IActionResult Delete(int id) { var todo = _todos.FirstOrDefault(t => t.Id == id); if (todo == null) return NotFound(); _todos.Remove(todo); return NoContent(); }}


请注意以下属性:

  • [ApiController] — 启用自动模型验证
  • [Route("api/[controller]")] — 设置基础路由/api/todo
  • [HttpGet], [HttpPost], [HttpPut], [HttpDelete] — 绑定HTTP方法到操作

博客

书籍推荐