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

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

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

开始课程

引言:用C#编写REST API——其实很简单

\n

REST API(表述性状态转移)是一种用于创建Web服务的架构风格,如今几乎每个现代应用程序都在使用它。如果你想快速学会用C#编写后端,那么ASP.NET Core是最佳起点。在本文中,我们将在30分钟内创建一个用于管理任务列表(Todo List)的完整REST API。你将了解如何配置项目、编写控制器、连接数据库以及通过Swagger测试API。

\n

准备好了吗?我们开始吧!

\n\n

步骤1:创建项目并配置环境

\n

首先,我们需要安装.NET SDK(6.0或更高版本)。可以从微软官方网站下载。安装完成后,打开终端或命令行,创建一个新项目:

\n
dotnet new webapi -n TodoApi\ncd TodoApi
\n

此命令将创建一个预装了Swagger的Web API模板。在Visual Studio Code或任何其他IDE中打开该项目。项目结构已包含Controllers、Models文件夹和Program.cs文件。

\n

现在,添加Entity Framework Core支持以操作数据库。安装必要的包:

\n
dotnet add package Microsoft.EntityFrameworkCore.InMemory\ndotnet add package Microsoft.EntityFrameworkCore.Design
\n

为简单起见,我们使用InMemory数据库——数据将存储在内存中。对于生产环境,你可以将其替换为SQL Server或PostgreSQL。

\n\n

步骤2:创建数据模型和数据库上下文

\n

创建TodoItem模型。在Models文件夹中创建文件TodoItem.cs:

\n
namespace TodoApi.Models;\n\npublic class TodoItem\n{\n    public long Id { get; set; }\n    public string? Title { get; set; }\n    public bool IsComplete { get; set; }\n}
\n

现在创建数据库上下文。在Data文件夹中(如果没有则创建),添加文件TodoContext.cs:

\n
using Microsoft.EntityFrameworkCore;\nusing TodoApi.Models;\n\nnamespace TodoApi.Data;\n\npublic class TodoContext : DbContext\n{\n    public TodoContext(DbContextOptions<TodoContext> options) : base(options) { }\n    public DbSet<TodoItem> TodoItems { get; set; }\n}
\n

在Program.cs中注册上下文:

\n
using Microsoft.EntityFrameworkCore;\nusing TodoApi.Data;\n\nvar builder = WebApplication.CreateBuilder(args);\n\nbuilder.Services.AddDbContext<TodoContext>(opt =>\n    opt.UseInMemoryDatabase("TodoList"));\n\nbuilder.Services.AddControllers();\nbuilder.Services.AddEndpointsApiExplorer();\nbuilder.Services.AddSwaggerGen();\n\nvar app = builder.Build();\n\nif (app.Environment.IsDevelopment())\n{\n    app.UseSwagger();\n    app.UseSwaggerUI();\n}\n\napp.UseHttpsRedirection();\napp.UseAuthorization();\napp.MapControllers();\napp.Run();
\n\n

步骤3:编写带有CRUD操作的控制器

\n

创建用于处理任务的控制器。在Controllers文件夹中添加文件TodoItemsController.cs:

\n
using Microsoft.AspNetCore.Mvc;\nusing Microsoft.EntityFrameworkCore;\nusing TodoApi.Data;\nusing TodoApi.Models;\n\nnamespace TodoApi.Controllers;\n\n[Route("api/[controller]")]\n[ApiController]\npublic class TodoItemsController : ControllerBase\n{\n    private readonly TodoContext _context;\n\n    public TodoItemsController(TodoContext context)\n    {\n        _context = context;\n    }\n\n    // GET: api/TodoItems\n    [HttpGet]\n    public async Task<ActionResult<IEnumerable<TodoItem>>> GetTodoItems()\n    {\n        return await _context.TodoItems.ToListAsync();\n    }\n\n    // GET: api/TodoItems/5\n    [HttpGet("{id}")]\n    public async Task<ActionResult<TodoItem>> GetTodoItem(long id)\n    {\n        var todoItem = await                

博客

书籍推荐