zoukankan      html  css  js  c++  java
  • 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方法,可规避掉路由重载的问题

  • 相关阅读:
    而字歌
    排列组合的学习,基础入门,选修2-3
    金句集(目前9句)
    简析几何叉乘与安培力的内在逻辑
    浅谈参变分离的妙用
    日语
    Tarjan-SCC-NOIP2015message
    WebAPI身份验证
    简单记录在Visual Studio 2013中创建ASP.NET Web API 2
    从两个平方算法到分治算法-java
  • 原文地址:https://www.cnblogs.com/masonblog/p/13042351.html
Copyright © 2011-2022 走看看