Обеспечение возможности обхода приложения GWT, когда сервер является интерфейсом REST - PullRequest
0 голосов
/ 14 декабря 2011

У меня есть интерфейс REST API и приложение GWT.Может ли кто-нибудь помочь мне в том, чтобы сделать мое приложение GWT доступным для сканирования, потому что документация, предоставленная Google для того, чтобы сделать приложение Ajax доступной для сканирования, предназначена для другой серверной архитектуры ??,Внешний и внутренний интерфейсы находятся в одном домене, но имеют разные URL.

Например, для доступа к внешнему интерфейсу пользователь может ввести «www.example.com # users», тогда как вПосле получения токена «пользователи» приложение будет вызывать REST API с помощью URL-адреса, который отличается от того, что набрал пользователь, например «www.example.com/restAPI/users».

Таким образом, фактически для каждого токена у нас будет URL-адрес уровня приложения и URL-адрес уровня сервера, которые всегда будут разными, поскольку для доступа к REST API необходимо использовать другой URL-адрес.

Итак, теперь моя серверная архитектура отличается от обычного ajax-приложения, потому что если вы отправите URL-адрес уровня приложения непосредственно на сервер без прохождения через интерфейс, ничего не будет получено.Внешний интерфейс фактически настраивает URL-адрес уровня приложения и адаптируется к определенным протоколам, выполняет запрос к REST API, получает результат и обновляет интерфейс пользователя на внешнем интерфейсе.

Мне нужно сделать это приложениепросканировать ??

1 Ответ

2 голосов
/ 09 января 2012

Вот как вы будете обрабатывать escape-фрагмент на стороне сервера. Идея состоит в том, чтобы использовать фильтр, перехватывать все URL (/ *) и переопределять doFilter():

String queryString = req.getQueryString();

if ((queryString != null) && (queryString.contains("_escaped_fragment_="))) {
//    use htmlunit to fetch the rendered html and serve back
      WebClient webClient = getWebClient();
      String page = convertToUnescapedForm(queryString);
      String rendered = webClient.getPage(page);
      resp.getWriter().println(rendered);
...
} else {
     chain.doFilter(req, resp);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...