新闻中心
.NET Web API如何配置路由(Routing)
启用属性路由是推荐做法,通过在Program.cs中调用app.MapControllers()并使用[Route]和HTTP特性(如[HttpGet])在控制器上定义精确路径,实现灵活、清晰的API路由管理。

在 .NET Web API 中,路由(Routing)决定了客户端请求如何映射到控制器中的具体操作方法。合理配置路由是构建清晰、可维护 API 的关键一步。.NET 支持两种主要的路由方式:传统基于约定的路由(Convention-based Routing)和属性路由(Attribute Routing)。下面介绍如何在项目中正确配置它们。
启用属性路由(Recommended)
现代 .NET Web API 推荐使用属性路由,因为它更灵活、直观,能精确控制每条路由。在 Program.cs 或 Startup.cs(取决于你使用的 .NET 版本)中,需要显式启用属性路由。
以 .NET 6+ 的 Program.cs 为例:
var builder = WebApplication.CreateBuilder(args); var app = builder.Build(); // 启用 MVC 并添加控制器支持 app.MapControllers(); // 这会启用属性路由 app.Run();
然后在控制器或方法上使用 [Route] 和 [HttpGet] 等特性定义路径:
[ApiController]
[Route("api/[controller]")]
public class ProductsController : ControllerBase
{
[HttpGet] // GET: api/products
public IActionResult GetAll() => Ok(new[] { "Product1", "Product2" });
[HttpGet("{id}")] // GET: api/products/5
public IActionResult GetById(int id) => Ok($"Product {id}");
[HttpPost] // POST: api/products
public IActionResult Create([FromBody] string name) => CreatedAtAction(nameof(GetById), new { id = 1 }, name);
}这样每个端点的路径都清晰可见,易于维护。
千鹿Pr助手
智能Pr插件,融入众多AI功能和海量素材
128
查看详情
配置传统路由(可选)
如果你希望使用基于约定的路由(比如 RESTful 风格自动匹配动作),可以在 MapControllers 之外手动添加传统路由模板。在 Program.cs 中:
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "api/{controller}/{action}/{id?}",
defaults: new { controller = "Home", action = "Index" });
});注意:这种方式需要控制器中的方法名称与 HTTP 动作匹配(如 Get、Post 等),适合简单场景,但不如属性路由灵活。
混合使用与高级配置
你可以同时使用属性路由和传统路由,系统会按注册顺序进行匹配。常见技巧:
- 版本化路由:通过前缀区分 API 版本
[Route("api/v1/[controller]")]
public class ProductsController : ControllerBase { }- 自定义约束:限制参数格式
[HttpGet("{id:int}")] // 只匹配整数
public IActionResult GetById(int id)- 多个路由映射同一方法
[HttpGet("products/all")]
[HttpGet("items")]
public IActionResult GetAll() => Ok();基本
上就这些。只要在启动时调用 MapControllers(),并在控制器上使用 [Route] 和 HTTP 方法特性,就能让 Web API 正确响应请求。属性路由是当前最佳实践,推荐优先使用。
以上就是.NET Web API如何配置路由(Routing)的详细内容,更多请关注其它相关文章!
# 并在
# 网站建设的区别与联系
# 拓之奇网络营销推广
# 家居媒体投放网站推广
# 玉溪seo公司参考火星
# 承德商城网站建设服务
# 女装最新火爆关键词排名
# 怀柔高端网站建设企业
# 苏州优化网站排名
# 廊坊企业开办网站建设
# 惠州seo优化套餐
# 相关文章
# app
# 推荐使用
# 两种
# 多个
# 你可以
# 如果你
# 渐进式
# 器上
# 器中
# .net
# 路由
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
抓大鹅解压小游戏 抓大鹅摸鱼解压入口
AO3官方在线访问地址 Archive of Our Own最新镜像合集
期待已久:小米17 Ultra、小米首款NAS本月登场
谷歌推RCS信息存档功能:公司可监控员工私密信息!
zookeeper 都有哪些功能?
Django模型中自动计算可用余额的实现方法
微博网页版直接访问 微博网页版账号管理快速入口
C++如何连接MySQL数据库_C++使用Connector/C++操作MySQL数据库教程
如何使用Go和Martini动态服务解码后的图片
Lar*el如何生成PDF或Excel文件_Lar*el文档导出工具与使用教程
J*aScript中高效管理与清空动态列表:避免循环陷阱
如何使用spryker/configurable-bundles-products-resource-relationship模块解决复杂产品捆绑关系难题
在Typer应用中优雅地处理和重组任意命令行参数
电脑屏幕颜色不舒服怎么办_Windows夜间模式与色彩校准教程【护眼技巧】
如何将HTML表格多行数据保存到Google Sheets
生成rdflib自定义SPARQL函数:参数匹配与实践指南
Spyder启动失败:字体文件权限拒绝错误解决方案
Mac怎么锁定备忘录_Mac备忘录加密设置教程
QQ网页版官方账号入口 QQ网页版网页版登录指南
在J*a中如何使用Stream.map转换元素_Stream映射操作解析
俄罗斯方块最新版入口 俄罗斯方块在线玩官网入口
c++如何使用TBB库进行任务并行_c++ Intel线程构建模块
sublime如何只显示或隐藏特定类型文件_sublime侧边栏文件过滤
PyTorch模型训练效果不佳?深入剖析常见错误与调试技巧
顺丰快递查询系统 官方正版查询入口
哔哩哔哩忘记密码了怎么找回_哔哩哔哩密码找回方法
NVIDIA股价11月重挫12%:下月有望好转 但难回5万亿美元巅峰
DLsite中文平台入口 DLsite官网内容在线查看
照顾宝贝2小游戏免费秒玩入口
J*a里如何实现订单支付与库存同步功能_支付库存同步项目开发方法说明
护手霜蹭到袖口上了如何清洗? 怎样避免留下一圈油印?
抖音小游戏合成大西瓜免费秒玩入口链接 抖音小游戏热门合集秒玩网站
css滚动区域卡顿如何改善_css滚动问题用will-change优化渲染
Win11怎么查看显卡显存 Win11显示适配器属性及专用视频内存查询
QQ邮箱网页版快速登录 QQ邮箱邮箱账号官方入口地址
Archive of Our Own官网直达 AO3最新可用地址一览
俄罗斯浏览器官网直达链接 俄罗斯浏览器最新在线入口导航
sublime如何优雅地处理行尾空格_sublime自动清理多余空白字符配置
中兴BladeV30怎样用测距估书架层高_iPhone中兴BladeV30测距估书架层高【家装参考】
2026年CSGO开箱网站推荐 CSGO开箱平台精选
UC浏览器网页版登录入口官网 电脑版网址入口
c++中为什么推荐使用using替代typedef_c++现代化类型别名
Golang并发任务中错误如何聚合_Golang goroutine error收集方式
《噬血代码2》新预告片发布 展示游戏剧情
C++如何检测键盘输入_C++ _kbhit与_getch函数非阻塞输入
解决J*aScript中重复选择项的确认对话框显示问题
小红书商家版怎样在笔记嵌入商品卡路径_小红书商家版在笔记嵌入商品卡路径【挂载教程】
铁路12306卧铺选择攻略 铁路12306下铺座位预定技巧
Pandas DataFrame 高效批量赋值:告别循环与笛卡尔积误区
J*aScript中高效清空DOM列表元素:解决for循环中断与任务管理问题


2025-11-12
浏览次数:次
返回列表