Довольно URL-адреса в Google App Engine

Я хочу передать параметр "A1B2C3" в приложение GWT на основе Google App Engine. Я делаю это как www.example.com/index.html?key=A1B2C3. Хотя он работает, я бы хотел использовать красивые URL-адреса. Возможно ли переписывать URL-адреса в Google App Engine? Я не мог понять, как.

www.example.com/A1B2C3

вместо

www.example.com/index.html?key=A1B2C3

Я использую Google App Engine и GWT. Все в Java.

Ответы

Ответ 1

Это крутой вопрос. Я выяснил, как это сделать для python.

app.yaml:

- url: /test/(.*)
  script: test.py \1

test.py:

#!/usr/bin/env python

import sys

def main():           
  for arg in sys.argv:
     print arg

if __name__ == '__main__':                               
  main()

Ответ 2

Вам нужно настроить приложение (см. здесь). Другими словами, вам нужно "проложить" нужные вам шаблоны.

Из руководства, пример:

<servlet-mapping>
    <servlet-name>redteam</servlet-name>
    <url-pattern>/red/*</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>blueteam</servlet-name>
    <url-pattern>/blue/*</url-pattern>
</servlet-mapping>

Ответ 3

Попробуйте UrlRewriteFilter: http://tuckey.org/urlrewrite/ (или github repo), это простой OL-фильтр Java EE, поэтому он должен работать.

Ответ 4

Сэкономьте некоторое время и используйте Restlet. Вы можете сделать именно это, и я сделал это в двух разных проектах. Это довольно прямолинейно. Если вам нужна помощь, сообщите мне.

Ответ 5

Я бы, вероятно, использовал PrettyFaces, http://ocpsoft.com/prettyfaces/, который позволяет делать сопоставления URL непосредственно поверх существующего приложения.

Вы просто настроили что-то вроде этого в файле pretty-config.xml:

<url-mapping>
   <pattern value="/my/pretty/url" />
   <view-id value="/my/existing/url" />
</url-mapping>

Или, если вы хотите переписать параметры, вы можете сделать это:

<url-mapping>
   <pattern value="/my/pretty/url/#{param}" />
   <view-id value="/my/existing/url" />
</url-mapping>

И это означает, что теперь все URL-адреса (входящие) становятся:

/my/pretty/url/value -> /my/existing/url?param=value

И исходящие URL-адреса будут выглядеть так на страницах HTML и в перенаправлении:

/my/existing/url?param=value -> /my/pretty/url/value

Так что легко добавить в свои текущие приложения.

Ответ 6

Вот еще один проект, который, я думаю, действительно может вам помочь:

Он назвал restful-gwt... это тоже довольно гладко: http://code.google.com/p/restful-gwt/

Удачи!

Ответ 7

Это лучший подход, который я нашел до сих пор для реализации перезаписи URL GAE Python