Довольно 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