如何在30分钟内用C#编写REST API:面向初学者

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

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

开始课程

引言:用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

博客

书籍推荐