好的 👍 我来帮你系统整理一份 C# 进阶之 Web API 学习指南,包含概念、架构、核心技术点和示例代码。
🔹 C# 进阶之 Web API
1. 什么是 Web API?
ASP.NET Web API 是微软提供的一个框架,用于构建 基于 HTTP 的服务,支持:
- 向浏览器、移动设备、桌面应用等提供数据服务
 - 使用 RESTful 风格(GET/POST/PUT/DELETE)
 - 默认使用 JSON 或 XML 作为数据交换格式
 
适合做 微服务接口、移动端后端、第三方接口开发。
2. Web API 与 MVC 的区别
- MVC:主要返回 视图(HTML 页面)
 - Web API:主要返回 数据(JSON、XML)
 - 两者底层相似,都基于 ASP.NET Pipeline,但关注点不同。
 
3. Web API 核心特性
- RESTful 风格接口:
GET→ 查询POST→ 新增PUT→ 修改DELETE→ 删除
 - 模型绑定 & 验证:自动解析 JSON → C# 对象。
 - 依赖注入(DI)支持:易扩展和测试。
 - 过滤器(Filters):统一处理认证、日志、异常。
 - 中间件(Middleware):自定义请求管道逻辑。
 - 跨域(CORS):允许前端调用 API。
 
4. Web API 基本示例
创建一个简单 API(ASP.NET Core Web API)
using Microsoft.AspNetCore.Mvc;
namespace MyWebApi.Controllers
{
    [ApiController]
    [Route("api/[controller]")]
    public class ProductsController : ControllerBase
    {
        // 模拟数据
        private static readonly List<string> Products = new() { "手机", "电脑", "平板" };
        // GET api/products
        [HttpGet]
        public IActionResult GetProducts()
        {
            return Ok(Products);
        }
        // GET api/products/1
        [HttpGet("{id}")]
        public IActionResult GetProduct(int id)
        {
            if (id < 0 || id >= Products.Count) return NotFound();
            return Ok(Products[id]);
        }
        // POST api/products
        [HttpPost]
        public IActionResult AddProduct([FromBody] string product)
        {
            Products.Add(product);
            return CreatedAtAction(nameof(GetProduct), new { id = Products.Count - 1 }, product);
        }
    }
}
5. 高级特性(进阶)
✅ 路由(Routing)
[Route("api/v1/[controller]/[action]")]
支持 属性路由 和 约定路由。
✅ 模型绑定 & 验证
public class UserDto
{
    [Required]
    public string Name { get; set; }
    [Range(1, 100)]
    public int Age { get; set; }
}
[HttpPost]
public IActionResult CreateUser([FromBody] UserDto user)
{
    if (!ModelState.IsValid) return BadRequest(ModelState);
    return Ok(user);
}
✅ 依赖注入(DI)
public interface IProductService
{
    IEnumerable<string> GetAll();
}
public class ProductService : IProductService
{
    public IEnumerable<string> GetAll() => new List<string> { "书籍", "笔记本" };
}
// Startup.cs / Program.cs
services.AddScoped<IProductService, ProductService>();
// Controller
private readonly IProductService _service;
public ProductsController(IProductService service) => _service = service;
✅ 过滤器(Filters)
public class LogActionFilter : IActionFilter
{
    public void OnActionExecuting(ActionExecutingContext context) 
        => Console.WriteLine("Action 执行前...");
    public void OnActionExecuted(ActionExecutedContext context) 
        => Console.WriteLine("Action 执行后...");
}
// 注册
services.AddControllers(options => options.Filters.Add<LogActionFilter>());
✅ 中间件(Middleware)
public class RequestLoggingMiddleware
{
    private readonly RequestDelegate _next;
    public RequestLoggingMiddleware(RequestDelegate next) => _next = next;
    public async Task Invoke(HttpContext context)
    {
        Console.WriteLine($"请求路径: {context.Request.Path}");
        await _next(context);
    }
}
// Startup.cs
app.UseMiddleware<RequestLoggingMiddleware>();
6. Web API 安全性
- 身份认证:JWT / OAuth2 / OpenID Connect
 - 授权:基于角色(Role)、策略(Policy)
 - CORS:允许前端跨域访问
services.AddCors(options => { options.AddPolicy("AllowAll", builder => builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader()); }); app.UseCors("AllowAll"); 
7. Web API 性能优化
- 使用 分页、缓存(MemoryCache/Redis)
 - 异步编程(
async/await) - 压缩(Gzip)
 - 使用 API Gateway(如 Ocelot)
 
8. 常见应用场景
- 移动应用后台接口(iOS/Android)
 - Web 前后端分离(React/Vue + Web API)
 - 微服务架构接口
 - 第三方 API 平台(支付、物流、天气等)
 
👉 总结:
C# Web API 是进阶开发的核心技能,掌握它能让你轻松构建 高性能、可扩展、安全的 RESTful 服务,并支持多端调用。
发表回复