当前位置: 首页 > 知识库问答 >
问题:

路由前缀vs路由

惠洛华
2023-03-14

我知道routePrefix本身不会向路由表添加路由。在您的操作中,您需要声明route属性。我很难找到一个权威的blog/msdn页面/说明为什么by defalutroutePrefix不在路由表中添加路由的东西。

有没有人有一个权威的帖子,确实包含了这种情况,如果是这样,你会让我知道是谁。非常感谢。

编辑以澄清我的问题

[RoutePrefix("api/Steve")]
public class SteveController : ApiController
{
    public int get(){return 1000000;}
}
[RoutePrefix("api/Steve")]
public class SteveController : ApiController
{
    [Route("")]
    public int get(){return 1000000;}
}

上面的场景之所以能够工作,是因为我们显式地声明了SteveController上的get操作有一个空路由。一旦我们这样做,路由就被添加到routetable

第一个场景不起作用,因为仅仅使用routePrefix并不能向路由表添加任何内容。routePrefix本身不会生成路由。这似乎是常识,我想找到一个可信的来源,如微软官方文档,说明为什么会这样。

共有1个答案

韦澄邈
2023-03-14

在属性路由中,路由前缀通过设计与路由相关联。

它用于为整个控制器设置公共前缀。

如果您阅读了介绍该特性的发行说明,您可能会对该主题有更好的理解。

[RoutePrefix("orders")] 
public class OrdersController : ApiController 
{ 
    [Route("{id}")] 
    public Order Get(int id) { } 
    [Route("{id}/approve")] 
    public Order Approve(int id) { } 
} 
public class MoviesController : ApiController 
{ 
    [Route("movies")] 
    public IEnumerable<Movie> Get() { } 
    [Route("actors/{actorId}/movies")] 
    public IEnumerable<Movie> GetByActor(int actorId) { } 
    [Route("directors/{directorId}/movies")] 
    public IEnumerable<Movie> GetByDirector(int directorId) { } 
} 

ASP.NET Web API 2.1中的新功能

ASP.NET Web API 2.2的新功能

关于这个问题的一篇很好的文章

 类似资料:
  • 公共路由前缀 To set default path (route prefix), use setGlobalPrefix() method of INestApplication object. Example: 使用INestApplication对象的setGlobalPrefix()方法可以设置默认路径(route prefix)。 const app = NestFactory.cre

  • 我有一个i18n项目在Symfony 4.1上运行。 我想实现一些路由,如: /= 在本文之后,我将使用注释处理路由,并为注释路由设置全局前缀: 这样,从'.../src/Controller/'注释中定义的所有路由都带有前缀,这导致我的“选择语言”页面和主页之间的冲突。 我想从i18n前缀中排除“选择语言”页面,这样当主页可以停留在 /fr或 /en.时,我就可以使用“/”了 有什么办法可以做到

  • 信息:我正在使用Larvel 6.1版。0,我希望我的网站支持不同的语言。因此,我创建了一个新的中间件,并希望为我的路由提供一个前缀,以便Laravel可以确定语言。也许有更好的方法,但这是我到目前为止所做的。 URL最终应该是这样的: mywebsite.com/en/home, url/locale/home 用于设置区域设置的中间件 在内核中注册了新的中间件setlocale。php 我的网

  • 我在Symfony 4应用程序中找不到有关全局路由前缀的任何信息。我唯一发现的是用注释控制器。但我不使用注释,我需要所有控制器都具有相同的前缀。 现在我可以在S3中这样在文件: 但是S4是没有捆绑的,我不能做同样的事情——我必须创建一个我不需要的捆绑。 是否可以在Symfony 4中定义一个全局路由前缀,或者我将在每个根目录前添加前缀/创建一个自定义路由加载器,尤其是在YAML中配置路由时?

  • 我正在尝试利用Laravel的登录页路径。例如,默认情况下,Laravel会将您带到欢迎页面,并且斜杠后没有url文本。 在我的欢迎页面中,我使用以下条件根据路线名称应用样式。 然而,此代码不工作。如何正确查看欢迎页面的路线? 编辑:使用“请求”而不是“路由”使其工作。然而,为了保持一致性,我想知道是否也可以使用“路线”来完成。

  • 我在我的注解里有。yaml使用注释管线设置的以下设置: 我这里的问题是,我可以创建一个像是否不带区域设置前缀? 这是保护区,我可以使用用户语言。我尝试使用这个symfony路由文档,但我希望保留注释。 目前它看起来像,但我希望。