.NET 8 ASP.NET Core Web API 实战:构建与测试 API Controllers
作者:xiaoxin.gao · 2025-06-26 · 阅读时间:4分钟
.NET 8 API Controllers
.NET 8 Web API 列表 详情 端点
ASP.NET Core Web API 教程
EF Core 控制器 实践
如何创建 ASP.NET Core API Controllers
引言 API Controllers 就像房屋的门,负责人们进出。对于 Web API,当我们通过 URL 访 […]
文章目录
引言
API Controllers 就像房屋的门,负责人们进出。对于 Web API,当我们通过 URL 访问接口时,就是“走”进了对应的 Controller。理解“列表(List)”与“详情(Detail)”端点是设计 API 的基础。本文将以 StockController 为例,带你从零实现并测试这两种常见端点。
一、创建 Controllers 文件夹与 StockController
- 在项目根目录下,新建
Controllers
文件夹。 - 在
Controllers
中添加StockController.cs
,并命名为StockController
,以便后续针对Stock
模型分离关注点。
namespace MyEfCoreApp.Controllers
{
public class StockController : ControllerBase
{
// 后续补充代码
}
}
二、添加基类、注解与构造函数注入
- 继承
ControllerBase
并添加[ApiController]
、[Route("api/[controller]")]
注解: - 在 Controller 中通过构造函数注入已配置好的
ApplicationDbContext
,并声明为只读字段,避免不必要的可变风险。
[ApiController]
[Route("api/[controller]")]
public class StockController : ControllerBase
{
private readonly ApplicationDbContext _context;
public StockController(ApplicationDbContext context)
{
_context = context;
}
// 列表与详情方法在下一节实现
}
三、实现 List 与 Detail 端点
1. 列表(List)端点
使用 [HttpGet]
定义 GET /api/stock
,通过 _context.Stocks.ToListAsync()
获取所有记录。
Deferred Execution:在调用 ToListAsync()
前,查询尚未执行;只有在取列表时才生成 SQL 并发送。
[HttpGet]
public async Task<ActionResult<IEnumerable<Stock>>> GetStocks()
{
return await _context.Stocks.ToListAsync();
}
2. 详情(Detail)端点
使用 [HttpGet("{id}")]
定义 GET /api/stock/{id}
,通过 FindAsync(id)
按主键查询单条记录,并处理未找到的情况。
[HttpGet("{id}")]
public async Task<ActionResult<Stock>> GetStock(int id)
{
var stock = await _context.Stocks.FindAsync(id);
if (stock == null)
return NotFound();
return stock;
}
四、在 Program.cs 中注册 Controllers
打开 Program.cs
,在构建应用之前,添加对 Controllers 的注册与映射:
var builder = WebApplication.CreateBuilder(args);
// 已注册 DbContext(略)…
builder.Services.AddControllers();
var app = builder.Build();
app.MapControllers();
app.Run();
未调用 AddControllers()
与 MapControllers()
会导致 Swagger 无法识别你的端点并出现 HTTPS 重定向错误。
五、添加测试数据 & Swagger 调试
-
在 SSMS 中插入测试数据
- 打开 SQL Server Management Studio → 选择
Stocks
表 → 右键 “Edit Top 200 Rows” → 手动添加几条示例记录(如 Tesla、VTI 等)。
- 打开 SQL Server Management Studio → 选择
-
使用 Swagger 测试 API
- 运行项目后打开 Swagger UI → 先执行 GET
/api/stock
,确认能拿到所有记录 → 再尝试输入某条记录的 ID 调用/api/stock/{id}
。
- 运行项目后打开 Swagger UI → 先执行 GET
小结与下一步
-
完成了 API Controllers 的基本搭建:
- 创建并注入
StockController
- 实现 List 与 Detail 端点
- 在
Program.cs
注册并映射 Controllers - 添加测试数据并通过 Swagger 验证接口
- 创建并注入
- 后续可扩展:新增 POST/PUT/DELETE 端点、添加 DTO 与 AutoMapper、编写单元测试等,提高 API 的完整性与可维护性。
原文引自YouTube视频:https://www.youtube.com/watch?v=cSnoAGHKVus
热门推荐
一个账号试用1000+ API
助力AI无缝链接物理世界 · 无需多次注册
3000+提示词助力AI大模型
和专业工程师共享工作效率翻倍的秘密
热门API
- 1. AI文本生成
- 2. AI图片生成_文生图
- 3. AI图片生成_图生图
- 4. AI图像编辑
- 5. AI视频生成_文生视频
- 6. AI视频生成_图生视频
- 7. AI语音合成_文生语音
- 8. AI文本生成(中国)
最新文章
- 如何获取企查查开放平台 API Key 密钥(分步指南)
- 什么是SDK?避免技术沟通陷阱
- 使用公共API增强内容管理
- 使用 ChatGPT 和 json-server 快速实现 mock API
- 品牌视觉的新时代:Brandfetch Logo API助你轻松获取品牌标识
- Kling AI API 实战指南:通过 Replicate 集成视频生成能力
- FastAPI 快速开发 Web API 项目: 通过 SQLAlchemy 进行数据操作
- 企业位置一键查询:Python 利用天眼查 API 实现经纬度查询
- 如何快速搭建用于模拟测试的Python REST API服务器
- API管理 – 什么是API管理?
- 如何用Python抓取雅虎财经数据
- Ambee土壤API:农业科技中的创新与应用案例