【问题标题】:How does naming of the controller path work?控制器路径的命名如何工作?
【发布时间】:2020-11-14 11:36:54
【问题描述】:

我在 .net core 3.1 上创建了一个 Azure Web API。我从“天气预报” api 演示开始。 它可以工作,但我不明白控制器的命名是如何工作的。

当我将控制器重命名为“DummyController”时,“神奇地”我的 api 的路径是 https://.../dummy。这怎么可能?它是如何工作的?

namespace mytestapi.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class DummyController : ControllerBase
    {
        [HttpGet]
        public string  Get()
        {
            return "wow it's magic!";
        }
    }
}

【问题讨论】:

  • 你为什么用这种方式来创建你的API?您可以轻松继承专用于 Web API 开发的 APIController
  • @IsmailDiari 这是在 Visual Studio 的模板中创建的!
  • 您选择了错误的模板,因为您可以提到您需要一个 WebApi 模板,它会为您准备好一切
  • @IsmailDiari 我这样做了。我将 Visual Studio 升级到 16.8.1 并安装了 .net core 3.1 LTS SDK。然后你得到这些模板

标签: asp.net .net asp.net-core


【解决方案1】:

Route Attribute 是定义自定义路由的快捷方式,无需在 startup 文件上进行全局配置。 该属性可以接受控制器模式等通用模式

[Route("[controller]")]

因此,在将根解析到此控制器时,它将采用不带后缀 Controller 的控制器类的名称,对于您的情况 Dummy

【讨论】:

  • 也谢谢你,我现在明白了。实际上,“[controller]”中的方括号正在发挥作用。
  • PS:我不高兴微软是怎么做的,在模板中有很多“魔法”没有解释。我更喜欢简单易懂的代码。
  • 你可以参考微软官方文档,你会找到你需要的一切。
【解决方案2】:

当您添加以下属性 [Route ("[controller]")] 并为控制器选择任何名称时,您的链接将是相同的名称。 例如,你可以说这个控制器的链接如下: [路线(“TestDummy”)]

【讨论】:

  • 谢谢,现在我明白了!实际上是方括号产生了魔力。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多