简介:用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方法到操作