asp.net core mvc 路由

embedded/2024/11/14 21:01:27/

在ASP.NET Core MVC中,路由是一项核心功能,它负责将进来的HTTP请求映射到相应的控制器和动作方法上。ASP.NET Core支持两种路由方式:传统的基于模板的路由(约定路由)和属性路由。

1. 基于约定的路由

Startup.Configure方法中配置应用程序使用MVC,并定义路由规则。这种方式通常在app.UseEndpoints中进行设置。

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{// 省略中间件配置app.UseRouting();app.UseEndpoints(endpoints =>{// 默认路由规则endpoints.MapControllerRoute(name: "default",pattern: "{controller=Home}/{action=Index}/{id?}");});
}

在这个例子中,定义了一个默认路由,它将请求映射到相应的控制器和方法上。如果请求没有指定控制器或动作,则默认使用Home控制器的Index方法。

2. 属性路由

属性路由允许通过在控制器或动作方法上应用特定的属性来直接在它们上面定义路由。这提供了更高的灵活性和控制。

[Route("api/[controller]")]
public class ProductsController : Controller
{[HttpGet]public IActionResult GetAll() {// 实现省略}[HttpGet("{id}")]public IActionResult Get(int id){// 实现省略}[HttpPost]public IActionResult Create([FromBody] Product product){// 实现省略}
}

在这个例子中,ProductsController的基础路由是api/products。这是通过将[Route("api/[controller]")]属性应用于控制器类来实现的。随后,针对控制器中的不同操作定义了更具体的路由。

混合使用

ASP.NET Core允许在同一个应用中同时使用基于约定的路由和属性路由。你可以根据具体情况选择最适合的路由策略。在很多情况下,属性路由提供了更高的灵活性,特别是在构建RESTful API时,而基于模板的路由则适用于更传统的MVC应用程序。

注意事项

  • 确保路由配置不会产生冲突,否则可能导致无法预期的路由行为。
  • 对于RESTful API设计,推荐使用属性路由,因为它们允许在路由层次结构中提供更清晰的API端点定义。
  • 从.NET Core 3.0开始,推荐在Startup.Configure方法中使用app.UseEndpoints来配置路由,这代表了一种更灵活的路由配置方式。

路由是连接用户请求和应用程序处理逻辑的桥梁,合理设计路由可以提升应用的可用性和易维护性。


http://www.ppmy.cn/embedded/7044.html

相关文章

简单了解 HTTP 基础知识

HTTP(Hypertext Transfer Protocol,超文本传输协议)是用于在网络上传输数据的一种协议,对于网络开发人员来说,理解这一协议是至关重要的。由于其广泛的应用,除了在网页应用传输数据之外,它还被应…

Linux应用开发(8):Linux进程间通信(IPC):管道

Linux应用开发(7):Linux进程间通信(IPC):POSIX消息队列https://blog.csdn.net/tecsai/article/details/137879465 1. 简述 我们在前面已经介绍了进程间通信(IPC)常用的“消息队列”…

微服务分布式缓存:无法反序列化 Cannot deserialize;

问题描述 在拆分SpringBoot项目搭建微服务的过程中,需要配置分布式缓存,对redis进行配置,配置完成后,在启动Knife4j文档界面时报错,发现是redis无法反序列化的问题,但是报错中所指出的类com.jhin.jhinoj.m…

GO环境及入门案例

文章目录 简介一、win GO开发环境安装二、Linux go运行环境二、GO代码入门2.1 导包案例2.2 赋值2.3 变量、函数2.4 三方库使用 简介 go不是面向对象语言, 其指针、结构体等比较像C,知名的go 开源项目有docker k8s prometheus node-exporter等 一、win …

百度文心一言与谷歌Gemini的对比

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 本文从多角度将百度文心一言与谷歌Gemini进行对比。因为不同评测基准的侧重点和难度可能有所不同,所以本文涉及到的评测结果仅供参考。Gemini和文心一言都是非常…

sqlite

SQLite是一种轻量级的嵌入式数据库引擎,它被广泛应用于移动设备、嵌入式系统和桌面应用程序等领域。最近,SQLite在以下几个方向上有了新的发展: 1. 支持JSON数据类型:SQLite 3.9版本引入了对JSON数据类型的支持,使得开…

装饰器学习

【一】什么是装饰器 装饰器指的就是为被装饰的对象添加新的功能 器 代表工具 增加后的调用方式不变 在不改变源代码和调用方式的基础上增加额外的新功能 【二】装饰器的用途 对上线后的程序进行新功能的增加和修改 给一个功能增加新的需求或者改变原来的程序运行逻辑 【…

【Linux】应用层协议:HTTP

URL 在之前的文章中我们实现了一个网络版本的计算器,在那个计算器中揉合了协议定制以及序列化反序列化的内容,我们当时也自己定制了一套协议标准,比如请求和响应的格式应该是什么?如何读到一个完整的报文?支持的运算符…