url-routing - 路由可以以变量开头吗?

标签 url-routing servicestack

这个 DTO

[Route("/{Module}/{Name}")]
public class ViewEntityList {
    public string Module { get; set; }
    public string Name { get; set; }
}

导致我的应用程序在启动时出错

RestPath '/{Module}/{Name}' on Type 'ViewEntityList' is not Valid



我可以将路线更改为以文字开头(例如 /Entity/{Module}/{Name} ),但这不是我想要的;此外,我的 URL 开始看起来过长且不像 REST。

是否可以使用变量开始路线?如果没有,是否有另一种方法可以将任何包含两个部分的路线映射到特定的 DTO?

最佳答案

我总是做以下事情:

        //Configure User Defined REST Paths
        Routes
            .Add<DTO1>("/service/function/{argument}")
            .Add<DTO2>("/service/commonsegment/{Function*}")

DT1 的映射是“基本”映射,一个 URL 对应一个 DTO。

在 DTO2 中,您将需要一个名为“Function”的键,它将为您提供 URL 的第一个“非常见”段的名称,如果可能,URL 中预设的任何其他段将映射到您的 DTO2(如果有匹配的属性)。通过这种方式,您可以在不更改 Web 服务器本身的情况下接受新功能/参数,而只需更改支持实现(可以/应该位于外部 dll 上)。

我希望这有帮助。

关于url-routing - 路由可以以变量开头吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13499379/

相关文章:

dependency-injection - 在 ServiceStack API 应用程序中使用的正确 'per request' Simple Injector 生活方式是什么?

servicestack - Chrome JavaScript 错误 : Refused to get unsafe header X-Response-Time with servicestack

ruby-on-rails - Perl 中的 Rails 或 Django 样式路由

asp.net-mvc - 是否可以在不同的 AppDomain 中运行 ASP.NET MVC 路由?

optimization - 随时间收集服务性能指标

servicestack - ServiceStack 中的自定义身份验证提供程序出现 ArgumentNullException

symfony - 将 URL 与 Symfony 中的路由匹配

c# - 在 C# 中从 URL 获取页面的类型

javascript - 具有多个页面的 PWA

angularjs - $cookieStore.get() 在 angularjs 中返回未定义