我是openRasta框架的新手。我有一个名为Project的资源。我有两种不同类型的GET要在这个资源上完成,因为我需要在这两个GET上有不同的信息。我的配置是这样的
ResourceSpace.Has.ResourcesOfType<IList<Project>>()
.AtUri("/projects")
.And.AtUri("/miniprojects")
.HandledBy<ProjectHandler>()
.AsJsonDataContract()
.And.AsXmlDataContract();
我在Handler中的方法如下
[HttpOperation(HttpMethod.GET, ForUriName = "/projects")]
public OperationResult GetProjectsList()
{
}
[HttpOperation(HttpMethod.GET, ForUriName = "/miniprojects")]
public OperationResult GetMiniProjectList()
{
}
每当我在这个资源上做一些GET时,无论我的URL是什么http://localhost/projects或http://localhost/miniprojects),每次都会调用处理程序类中第一个带GetXXX名称的方法。当我在处理程序文件中更改了GetXXX方法的序列时,会调用另一个方法 所以我的问题是,Handler中的方法序列是否确定要调用哪个GetXXX方法?此外,我在代码段中提到的每个GetXXX方法的HttpOperation属性中指定了不同的“ForUriName”,但序列仍然优先。
任何人都可以帮我解决这个问题吗?或者让我知道我是否遗漏了什么。
提前致谢。
答案 0 :(得分:3)
如果无法确定两个URI之间的区别,那么我们根本不保证任何订单。
如果您确实想以这种方式使用URI路由(而不是模型化不同的资源),那么您的uri需要使用名称注册
.AtUri("/miniprojects").Named("miniprojects")
命名位需要匹配属性
[HttpOperation(ForUriName="miniprojects")]