Проблема с приоритетом методов Getrasta в обработчике ресурсов - PullRequest
2 голосов
/ 09 ноября 2011

Я новичок в openRasta Framework.У меня есть ресурс под названием 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 будет вызван?Более того, я указал разные «ForUriName» в атрибуте HttpOperation для каждого метода GetXXX, как указано в фрагменте, но все же последовательность имеет приоритет.

Может ли кто-нибудь помочь мне в решении этой проблемы?Или дайте мне знать, если я что-то упустил.

Заранее спасибо.

1 Ответ

3 голосов
/ 09 ноября 2011

Если нет никакого способа сделать различие между двумя URI, то мы не гарантируем какой-либо порядок вообще.

Если вы действительно хотите использовать маршруты URI таким образом (в отличие от модели различных ресурсов), тогда ваш uri должен быть зарегистрирован под именем

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

Именованный бит должен соответствовать атрибуту

[HttpOperation(ForUriName="miniprojects")]
...