• 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方法,可规避掉路由重载的问题

  • 相关阅读:
    mybatis两种方式
    js绑定下拉框数据源
    修改 Idea 终端 Terminal 为 GitBash
    git stash使用
    解决百度网盘容量不符,没存进东西但容量变小的问题
    key_load_public: invalid format
    排序算法
    SpringBoot---自动配置原理
    mysql系列——Explain关键字(十)
    mysql系列——开启慢查询日志(十一)
  • 原文地址:https://www.cnblogs.com/masonblog/p/13042351.html
Copyright © 2020-2023  润新知