引言:用C#开发REST API比想象中更简单
Web应用和微服务的开发离不开REST API。如果你刚刚开始编程之旅,创建自己的API可能看起来是一项艰巨的任务。然而,借助C#的ASP.NET Core框架,你可以在短短30分钟内编写出一个可运行的RESTful服务。
在本指南中,我们将逐步创建一个用于管理任务列表(Todo List)的简单API。你将学习如何配置项目、创建数据模型、控制器以及测试端点。没有魔法——只有干净的代码和清晰的解释。
到文章结束时,你将拥有一个完全可运行的API,支持所有基本的CRUD操作(创建、读取、更新、删除)。
步骤1:环境准备与项目创建
在编写代码之前,请确保已安装必要的工具:
- .NET SDK(版本8.0或更新)——从Microsoft官方网站下载
- Visual Studio(2022 Community版)或带有C#扩展的Visual Studio Code
- Postman或任何其他用于测试的REST客户端
打开终端(或命令行)并执行以下命令以创建新的Web API项目:
dotnet new webapi -n TodoApicd TodoApi创建项目后,在你的IDE中打开TodoApi文件夹。项目结构将包含几个文件夹和文件,但我们目前关注三个关键部分:Program.cs、Controllers和Models。
步骤2:创建数据模型
模型是一个类,用于描述我们API的数据结构。对于任务列表,我们需要三个字段:唯一标识符、名称和完成状态。
在项目根目录下创建一个新的Models文件夹,并在其中创建文件TodoItem.cs:
namespace TodoApi.Models;
public class TodoItem{ public int Id { get; set; } public string? Name { get; set; } public bool IsComplete { get; set; }}注意string后面的问号。它表示Name属性可以为null。这是避免编译器警告的良好实践。
步骤3:创建控制器并实现CRUD
控制器是一个处理HTTP请求的类。在ASP.NET Core中,控制器继承自ControllerBase,并使用属性进行路由。
在Controllers文件夹中创建文件TodoItemsController.cs:
using Microsoft.AspNetCore.Mvc;using TodoApi.Models;
namespace TodoApi.Controllers;
[ApiController][Route("api/[controller]")]public class TodoItemsController : ControllerBase{ private static List<TodoItem> _todoItems = new();
// GET: api/TodoItems [HttpGet] public ActionResult<IEnumerable<TodoItem>> GetTodoItems() { return _todoItems; }
// GET: api/TodoItems/1 [HttpGet("{id}")] public ActionResult<TodoItem> GetTodoItem(int id) { var item = _todoItems.FirstOrDefault(t => t.Id == id); if (item == null) return NotFound(); return item; }
// POST: api/TodoItems [HttpPost] public ActionResult<TodoItem> PostTodoItem(TodoItem item) { item.Id = _todoItems.Count + 1; _todoItems.Add(item); return CreatedAtAction(nameof(GetTodoItem), new { id = item.Id }, item); }
// PUT: api/TodoItems/1 [HttpPut("{id}")] public IActionResult PutTodoItem(int id, TodoItem updatedItem) { var existingItem = _todoItems.First