路由机制会把一个请求的URI映射到一个Controller上面的Action,所以当你发送一个HTTP请求的时候,MVC框架会解析这个请求的URI,并尝试着把它映射到一个Controller上面的Action。

两个路由中间件

在ASP.NET Core 3.x里面,建议使用Endpoint路由来进行设置。但是我们需要先在请求的管道里面添加两个中间件:

  • app.UseRouting()。它是用来标记路由决策在请求管道里发生的位置,也就是在这里会选择端点。

  • app.UseEndpoints()。它是用来标记选择好的端点在请求管道的什么地方来执行。

这样做的好处就是,我们可以在选择端点和执行端点的中间位置插入其它的中间件。这样的话,插入到中间位置的中间件就会知道哪个端点被选取了,而且它也有可能会选择其它的端点。

一个非常好的例子就是授权中间件:

如果授权成功,那么就继续执行到之前选定的端点,否则的话就会跳转到其它端点或者短路返回。

官方文档:Startup里面路由配置的官方文档。

映射端点

还是可以有两种方式进行设置:基于约定 或者 基于属性。

基于约定的路由,例如这两种:

这种方式更适合于服务器端的Web应用程序。

而针对Web API,使用基于属性的路由更加适合:

可以看到,这里面仅仅映射了Controller,并没有使用任何约定,所以我们需要采用属性(Attribute)来进行设定。这里需要用到属性(attribute)和URI模板。

  • 属性(Attribute)。例如[Route],[HttpGet],[HttpPost]等等,可以把它们放在Controller级别,也可以放在Action级别上。

  • URI模板。将属性结合URI模板一起使用,就可以把请求映射到Controller的Action上面。

例如:

官方文档:路由基础知识。

官方文档请点击原文链接.

使用ASP.NET Core 3.x 构建 RESTful API - 3.2 路由相关推荐

  1. 使用ASP.NET Core 3.x 构建 RESTful API - 2. 什么是RESTful API

    1. 使用ASP.NET Core 3.x 构建 RESTful API - 1.准备工作 什么是REST REST一词最早是在2000年,由Roy Fielding在他的博士论文<Archit ...

  2. 使用ASP.NET Core 3.x 构建 RESTful API - 1. 开始

    以前写过ASP.NET Core 2.x的REST API文章,今年再更新一下到3.0版本. 预备知识:ASP.NET Core 和 C# 工具:Visual Studio 2019最新版(VSCod ...

  3. 使用ASP.NET Core 3.x 构建 RESTful API - 4.2 过滤和搜索

    向Web API传递参数 数据可以通过多种方式来传给API. Binding Source Attributes 会告诉 Model 的绑定引擎从哪里找到绑定源. 共有以下六种 Binding Sou ...

  4. 使用ASP.NET Core 3.x 构建 RESTful API - 3.4 内容协商

    现在,当谈论起 RESTful Web API 的时候,人们总会想到 JSON.但是实际上,JSON 和 RESTful API 没有半毛钱关系,只不过 JSON 恰好是RESTful API 结果的 ...

  5. 使用ASP.NET Core 3.x 构建 RESTful API - 3.1 API资源命名

    为了与RESTful API进行交互,API消费者需要使用到三个概念: 资源的标识.也就是可以找到资源的URI. HTTP方法.例如GET,POST等等,这些方法是HTTP协议的一部分. 有效载荷(可 ...

  6. 使用ASP.NET Core 3.x 构建 RESTful API - 3.3.3 ProblemDetails

    当ASP.NET Core 大约在 2.1 版本的时候,它引入了 ProblemDetails.ProblemDetails是基于 RFC7807 这个规范,目的是让 HTTP 响应可以携带错误的详细 ...

  7. 使用ASP.NET Core 3.x 构建 RESTful API - 3.2 开始建立Controller和Action

    Demo 下面我们就来实践一下.打开之前的项目,并建立CompaniesController: 这里有6个地方比较关键,我们挨个看一下: RESTful API 或者其它Web API的Control ...

  8. 使用ASP.NET Core 3.x 构建 RESTful API - 4.1 面向外部的Model

    Entity Framework Core 使用的 Entity Model 是用来表示数据库里面的记录的. 而面向外部的 model 则表示了要传输的东西.这类 model 有时候叫做 Dto,有时 ...

  9. 使用ASP.NET Core 3.x 构建 RESTful API - 4.3 HTTP 方法的安全性和幂等性

    什么样的HTTP方法是安全的? 如果一个方法不会改变资源的表述,那么这个方法就被认为是安全的. 例如 HTTP GET 和 HTTP HEAD 就被认为是安全的,但需要注意的是,这并不意味着执行GET ...

最新文章

  1. 联通突然从4g变成3g了_中国联通最快明年底2G全面退网 并推进3G逐步退网
  2. python集合类型_Python 的集合(set)类型
  3. [学习笔记]Event与Bindable
  4. java如何分页_java中分页的实现
  5. 查看某个端口是否链接超时
  6. [react] 使用高阶组件(HOC)实现一个loading组件
  7. 【快写】基本思路及模板
  8. 大数据文本分析的应用场景有哪些?
  9. 深度学习——行数据的分拆及如何“喂”给训练过程
  10. linux新建自定义命令,Linux 创建自定义命令
  11. 宝塔apache mysql_宝塔Linux面板命令大全,安装宝塔,Nginx,Apache,MySQL等 - SEO中文网...
  12. 黑客语言Python
  13. 刷新报表页面的方法总结
  14. 解决手机QQ发送文件给电脑端,电脑端无法接收的问题
  15. mysql备份管家婆_管家婆怎么恢复数据,备份数据
  16. 华为U2000网管研究实录 (3) - 运行分析(服务端进程)
  17. 天涯宝盒-天涯看贴脚本-只看楼主-自动翻页
  18. 2013.11.18周例会小结
  19. 奇怪的问题:Windows 11 22H2任务管理器颠倒显示GPU使用率
  20. lzg_ad:XPE开发工具使用说明

热门文章

  1. android wi-fi_如何在Android手机上查找3G或Wi-Fi速度
  2. 中国人工智能学会通讯——基于视频的行为识别技术 1.1 什么是行为
  3. ThinkPHP多次重复提交问题的根源
  4. java以Blob形式存储,读取图片并在jsp页面显示图片流
  5. 配置Tomcat的日志系统
  6. 解决scrollViewDidScroll do not work的方法
  7. JQuery上传插件Uploadify使用详解
  8. 2011年Android手机用户购买行为研究报告
  9. 饿了么超级会员,年卡低至108元!饿了么会员,点外卖超省钱!
  10. 发布nuget包的正确姿势---cicd自动打包发布