2

我是 openRasta 框架的新手。我有一个名为 Project 的资源。我有 2 种不同类型的 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”,但序列仍然优先。

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

提前致谢。

4

1 回答 1

3

如果无法区分两个 URI,那么我们根本不保证任何顺序。

如果你真的想以这种方式使用 URI 路由(而不是为不同的资源建模),那么你的 uri 需要注册一个名称

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

Named 位需要匹配属性

[HttpOperation(ForUriName="miniprojects")]
于 2011-11-09T14:49:10.580 回答