我是 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/projects或http://localhost/miniprojects )每次都会调用处理程序类中名称为 GetXXX 的第一个方法。当我更改处理程序文件中 GetXXX 方法的顺序时,会调用另一个方法。
所以我的问题是,Handler中的方法顺序是否决定了调用哪个GetXXX方法?此外,我在 HttpOperation 属性中为代码片段中提到的每个 GetXXX 方法指定了不同的“ForUriName”,但顺序仍然优先。
有人可以帮我解决这个问题吗?或者如果我遗漏了什么请告诉我。
提前致谢。
最佳答案
如果无法区分两个 URI,那么我们根本不保证任何顺序。
如果您确实想以这种方式使用 URI 路由(而不是对不同的资源建模),那么您的 uri 需要使用名称进行注册
.AtUri("/miniprojects").Named("miniprojects")
命名位需要与属性匹配
[HttpOperation(ForUriName="miniprojects")]
关于methods - Openrasta 的 Get 方法在资源处理程序中的优先级问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8061510/