零基础入门:一步步打造健壮的 .NET Core Web API(实战图文教程)
适合人群:.NET Core Web API初学者、在校学生、后端开发入门者以及对.NET技术感兴趣的你!
引言:为什么要学 .NET Core Web API?
你是否想过这样一个问题:为什么现在大厂和互联网公司都喜欢用Web API?尤其是.NET Core Web API更是成为主流。其实,API是现代应用系统之间沟通的桥梁,而.NET Core则以高性能、跨平台和强大的生态圈著称,非常适合初学者入门和企业级项目开发。
本教程将带你从零开始,搭建一个“健壮、易维护、可扩展”的.NET Core Web API项目。无论你是刚入门的小白,还是想夯实基础的学生党,都能在这里找到成长的阶梯!
一、项目搭建与结构梳理
首先,你需要安装好.NET SDK(建议直接去官方站点下载最新版)。
新建Web API项目:
dotnet new webapi -o MyWebApi
cd MyWebApi
推荐的目录结构:
MyWebApi/
├── Controllers/ # 控制器,API入口
├── Services/ # 业务逻辑层
├── Models/ # 实体模型
├── DTOs/ # 数据传输对象
├── Middleware/ # 中间件
├── appsettings.json
├── Program.cs # 应用程序入口
└── MyWebApi.csproj
二、核心开发理念与最佳实践
1. 依赖注入(Dependency Injection)
.NET Core 内置支持依赖注入,让代码更灵活、更易测试。
builder.Services.AddTransient<IMyService, MyService>();
- Transient:每次请求都新建实例
- Scoped:每个请求一个实例
- Singleton:应用生命周期一个实例
2. 全局Using简化代码
在GlobalUsings.cs
统一引入常用命名空间,提升开发效率。
global using System;
global using System.Collections.Generic;
global using System.Linq;
3. Model与DTO分离,解耦数据结构
Model映射数据库表,DTO负责API数据传输,二者独立更安全灵活。
public class Product { public int Id { get; set; } public string Name { get; set; } ... }
public class ProductDTO { public int Id { get; set; } public string Name { get; set; } ... }
配合AutoMapper快速完成对象映射。
4. 数据访问层:通用仓储与工作单元模式
初学者常犯的错误是直接在控制器里写数据库操作,这样代码难维护😱。正确做法是抽象出Repository和UnitOfWork。
通用仓储接口与实现
public interface IGenericRepository<T> where T : class { ... }
public class GenericRepository<T> : IGenericRepository<T> where T : class { ... }
工作单元模式简化事务管理
public interface IUnitOfWork : IDisposable { ... }
public class UnitOfWork : IUnitOfWork { ... }
这样做的好处:
- 便于单元测试
- 数据访问逻辑集中管理
- 支持数据库切换
5. 异步消息队列:解耦服务,提升性能
实际项目中,经常需要解耦耗时操作,比如订单处理、通知推送等。推荐使用Azure Service Bus + MassTransit。
配置示例:
builder.Services.AddMassTransit(x => {
x.UsingAzureServiceBus((context, cfg) => {
cfg.Host("your_service_bus_connection_string");
cfg.ReceiveEndpoint("my_queue", e => { e.Consumer<MyConsumer>(); });
});
});
6. 强大的过滤与排序功能
数据量大时,前端同学一定会找你加分页/筛选功能!Sieve库让你几分钟就搞定。
集成Sieve示例:
[HttpGet]
public async Task<IActionResult> Get([FromQuery] SieveModel sieveModel)
{
var products = await _productService.GetAllAsync();
var filteredProducts = _sieveProcessor.Apply(sieveModel, products.AsQueryable()).ToList();
return Ok(filteredProducts);
}
7. API安全防护:JWT认证
API如果不加认证,迟早会被攻击!推荐使用JWT。
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options => {
options.Authority = "https://your-auth-provider.com";
options.Audience = "your-api-audience";
});
用[Authorize]
装饰你的接口即可。
8. 自定义中间件,提升可维护性
异常处理中间件
public class ExceptionMiddleware : IMiddleware { ... }
app.UseMiddleware<ExceptionMiddleware>();
请求日志中间件
public class LoggingMiddleware : IMiddleware { ... }
app.UseMiddleware<LoggingMiddleware>();
9. 健康检查与Docker化部署
一行代码集成健康检查
builder.Services.AddHealthChecks();
app.UseHealthChecks("/health");
Dockerfile一键打包上线
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
...
打包镜像并运行:
docker build -t mywebapi .
docker run -d -p 8080:80 mywebapi
10. 持续集成/持续部署(CI/CD)
用GitHub Actions自动完成构建、测试和部署,让你轻松成为运维高手!
.github/workflows/main.yml
示例:
name: CI/CD
on:
push:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup .NET Core
uses: actions/setup-dotnet@v1
with:
dotnet-version: "6.0"
- name: Install dependencies
run: dotnet restore
- name: Build & Test & Publish ...
让代码上线更高效、安全!
三、实战案例:产品管理API全流程
创建ProductsController.cs
实现增删查改(CRUD):
[Route("api/[controller]")]
[ApiController]
public class ProductsController : ControllerBase {
private readonly IProductService _productService;
private readonly ISieveProcessor _sieveProcessor;
// 构造函数省略...
[HttpGet]
public async Task<IActionResult> Get([FromQuery] SieveModel sieveModel) { ... }
[HttpGet("{id}")]
public async Task<IActionResult> Get(int id) { ... }
[HttpPost]
public async Task<IActionResult> Post([FromBody] ProductDTO productDto) { ... }
[HttpPut("{id}")]
public async Task<IActionResult> Put(int id, [FromBody] ProductDTO productDto) { ... }
[HttpDelete("{id}")]
public async Task<IActionResult> Delete(int id) { ... }
}
结语:从入门到进阶,你准备好了吗?
🎉 恭喜你!现在你已经掌握了.NET Core Web API开发的主流流程与最佳实践。从项目搭建、分层架构到自动化运维,无论是日常小项目还是企业级需求,都能应对自如!
📣 互动时间
- 你遇到过哪些API开发的“坑”?欢迎留言分享经验!
- 如果本教程对你有帮助,别忘了点赞👍、收藏⭐和分享给你的伙伴!
- 有想深入学习的主题?评论区告诉我,下期教程安排上!
Happy Coding!🚀
更多学习资料推荐: