Core3.0路由配置

前言

 MSDN文档,对ASP.NETCore中的路由完整的介绍

https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/routing?view=aspnetcore-3.0#routing-basics

概念

路由负责匹配传入的 HTTP 请求,然后将这些请求发送到应用的可执行终结点。

终结点是应用的可执行请求处理代码单元。 终结点在应用中进行定义,并在应用启动时进行配置。

终结点匹配过程可以从请求的 URL 中提取值,并为请求处理提供这些值。 通过使用应用中的终结点信息,路由还能生成映射到终结点的 URL。

测试步骤

ValuesController.cs代码

    [Route("api/[controller]")]
    public class ValuesController : Controller
    {
        // GET api/values
        [HttpGet]
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }

        // GET api/values/5
        [HttpGet("{id}")]
        public string Get(int id)
        {
            return "value";
        }

        // POST api/values
        [HttpPost]
        public void Post([FromBody] string value)
        {
        }

        // PUT api/values/5
        [HttpPut("{id}")]
        public void Put(int id, [FromBody] string value)
        {
        }

        // DELETE api/values/5
        [HttpDelete("{id}")]
        public void Delete(int id)
        {
        }
    }

将Startup.cs中的路由配置注释

 运行结果,请求返回400

 注册路由到控制器

先取消注释,

 路由配置,

 直接Get请求到控制器,此时会根据HTTP请求去匹配到对应的方法,Get请求访问特性为HttpGet的Action方法

 对应的Action方法

发生路由重载

同一中Http请求方法,有2个Action方法,如下如

 此时请求,会报错

 解决办法

1.修改路由规则 /api/[controller]/[action]

2.修改谓词,比如一个get,一个post

3.如果有参数的话,Get方法添加参数,比如[HttpGet("{id}")],此时的方法名为public string Get(int id)

4.按照业务功能,创建一个新的相关的Controller,此方法需要根据业务判断去决定是否使用。

项目实际使用

创建了一个类,继承自Controller类,标记为APIController,路由配置到Action方法,可规避掉路由重载的问题

原文地址:https://www.cnblogs.com/masonblog/p/13042351.html