这个 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/