在同一个 Dropwizard 0.8.5 应用程序中映射静态和动态视图(以及 REST 端点)

Mapping static and dynamic views (and REST endpoints) in the same Dropwizard 0.8.5 app

我是 DW 的新手(使用 0.8.5),我正在尝试实现一个小型 DW 应用程序,它既可以充当 Web 应用程序(提供静态和动态页面的混合服务),又可以公开一些 REST 端点对于 API 个客户。

目前,我从根上下文(http://localhost:8080 for local and http://dev.myapp.example.com for dev)提供应用程序。我正在尝试弄清楚如何制作一个映射到根上下文 ("/") 的静态主页 (index.html),以及一个 "contact us" 样式的静态页面 (contact.html)映射到 /contact。

这是我想要的 URL 策略:

http://localhost:8080/         --> index.html (my static homepage)
http://localhost:8080/contact  --> contact.html (static contact page)
http://localhost:8080/app/*    --> dynamic web pages, using DW Views & Freemarker
http://localhost:8080/api/*    --> REST endpoints under here

我发现 this blog 这让我很困惑,因为在 0.8.5 中似乎没有明确的方法可以做到这一点。有人可以解释使它正常工作所需的步骤吗?最好有代码示例或 GitHub 要点?我认为这会帮助很多人。

听起来我需要添加 AssetsBundle,但我不知道我需要如何完全配置它或将静态 HTML 文件放置在我的应用程序中的什么位置。想法?

迄今为止我最好的尝试:

  1. initialize()
  2. 里面添加bootstrap.addBundle(new AssetBundle())
  3. src/main/resources/assets/ 下放置所有静态联系人(index.htmlcontact.htm 等)

但我正在努力解决的问题是将生活在 src/main/resources/assets 中的静态 HTML 文件映射到我想要的 URLs,尤其是在这样一种方式下,它们不会导致与动态 views/pages 或 REST resources/endpoints 冲突。想法?

AssetBundleConfigurableAssetBundle 似乎 不是 DW > 0 的方式。8.x.

相反,只需像使用动态视图一样使用 Dropwizard-Views bundle,只需将 HTML 文件重命名为 FTL 或 mustache 文件(例如,index.ftl 而不是 index.html, 等等).