Возможно ли иметь строго типизированные обработчики HTTP-запросов в Restlet? - PullRequest
0 голосов
/ 22 ноября 2011

Рассмотрим следующий ServerResource производный тип:

public class UserResource extends ServerResource {
  @Get
  public User getUser(int id) {
    return new User(id, "Mark", "Kharitonov");
  }
}

(Да, он всегда возвращает одного и того же пользователя независимо от заданного идентификатора).

Возможно ли заставить его работатьв рестлете?Потому что, насколько я понимаю, ожидаемая подпись обработчика GET:

Representation get();

ИЛИ

Representation get(Variant v);  // (no idea what it means yet)

Теперь я понимаю, что могу реализовать не типобезопасный обработчик GETизвлечь аргументы из запроса, а затем вызвать getUser, после чего составить соответствующий экземпляр Representation из результата и вернуть.Но это стандартный код, он не относится к коду приложения, его место находится внутри фреймворка.По крайней мере, так работает OpenRasta - REST-фреймворк, который я использовал в .NET

Спасибо.

1 Ответ

0 голосов
/ 27 ноября 2011

Вы должны удалить параметр из подписи

  @Get
  public User getUser() {
    String id = getQuery().getFirstValue("id");
    return new User(id, "Mark", "Kharitonov");
  }

В этом случае нет необходимости переопределять методы get (), так как аннотация @Get будет обнаружена автоматически.

...