当服务器是REST接口时,可以抓取GWT App

时间:2011-12-14 08:02:06

标签: gwt rest seo web-crawler

我有一个REST API和一个GWT应用程序作为前端。有人可以帮助我使我的GWT应用程序可抓取,因为谷歌提供的使Ajax应用程序可抓取的文档是针对不同的服务器架构吗?

我有一个应用程序,它作为前端和后端解耦。前端和后端位于同一个域中,但具有不同的URL。

例如要访问前端,用户可以键入“www.example.com#users”,而在获取令牌“users”后的应用程序中,应用程序将使用与用户键入的URL不同的URL调用REST API例如“www.example.com/restAPI/users”。

事实上,对于每个令牌,我们都会有一个应用程序级别的URL和一个始终不同的服务器级别的URL,因为要访问REST API,必须使用不同的URL。

现在,我的服务器架构与普通的ajax应用程序不同,因为如果将应用程序级别的URL直接推送到服务器而不通过前端,则不会获得任何内容。前端实际上定制应用程序级URL并适应某些协议,查询REST API,获取结果并更新前端的UI。

我需要让这个应用程序可抓取吗?

1 个答案:

答案 0 :(得分:2)

以下是您在服务器端处理转义片段的方法。我们的想法是使用过滤器,拦截所有网址(/ *),并覆盖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);
}