Openrasta的Get方法在资源处理程序中的优先级问题

时间:2011-11-09 07:11:17

标签: methods resources get url-routing openrasta

我是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/projectshttp://localhost/miniprojects),每次都会调用处理程序类中第一个带GetXXX名称的方法。当我在处理程序文件中更改了GetXXX方法的序列时,会调用另一个方法 所以我的问题是,Handler中的方法序列是否确定要调用哪个GetXXX方法?此外,我在代码段中提到的每个GetXXX方法的HttpOperation属性中指定了不同的“ForUriName”,但序列仍然优先。

任何人都可以帮我解决这个问题吗?或者让我知道我是否遗漏了什么。

提前致谢。

1 个答案:

答案 0 :(得分:3)

如果无法确定两个URI之间的区别,那么我们根本不保证任何订单。

如果您确实想以这种方式使用URI路由(而不是模型化不同的资源),那么您的uri需要使用名称注册

.AtUri("/miniprojects").Named("miniprojects")

命名位需要匹配属性

[HttpOperation(ForUriName="miniprojects")]