删除向导:无法提供静态 HTML



我目前正在 Dropwizard 的根路径"/"处提供静态 html 页面。 到目前为止,我只收到一个错误页面,指出"HTTP 错误 404 访问/时出现问题。原因:未找到"。

在执行此操作时,我遵循了 1.2.2 的 Dropwizard 文档以及此处的本教程,并对我的服务工作的代码进行了一些更改。 我的 .yml 文件中的根路径/profile/v1允许我的 getAll 服务工作(当我第一次开始时,我收到一个错误,因为我有Multiple servlets map to path /*. .yml 如下所示:

server:
type: simple
applicationContextPath: /
rootPath: /profile/v1

此外,我在主应用程序类中的初始化是:

@Override
public void initialize(final Bootstrap<AutomationConfigServiceConfiguration> bootstrap) {
bootstrap.addBundle(new AssetsBundle("/../resources", "/", "index.html"));
}

这在泽西岛注册为:

environment.jersey().setUrlPattern("/*");

其中/resources是我保存静态资产的目录,位于java目录之外。

到目前为止,我已经能够让我的服务在此设置中正常工作。 例如,当我转到 localhost:8080/profile/v1/name/getAll 时,我能够从数据库中检索所有名称,如果我转到 localhost:8080/profile/v1/titles/getAll,我会从数据库中获取所有标题。 如果我使用 localhost:8080,带或不带"/",我只会得到一个 404 页面,说它找不到"/"。 从理论上讲,这应该非常简单,所以我不确定我还应该做什么。

编辑:

当我转到/profile/v1 时,我得到以下信息:

{
code: 404,
message: "HTTP 404 Not Found",
}

我应该提到,我不希望我的 html 在这里提供; 我希望它在根目录下提供,因为我的所有服务都使用路径/profile/v1。 请求这样做是为了帮助设置 DNS。

对代码进行几次修改后,使其进入工作状态。

  1. 资产包路径是从项目资源文件夹计算的。因此,添加相对于该路径的路径。这里assets目录位于${Project Root}/src/main/resources目录中

    bootstrap.addBundle(new AssetsBundle("/assets/", "/"));
    
  2. 删除显式泽西岛注册表项。我相信这是从配置继承而来的。

    environment.jersey().setUrlPattern("/*"); /*this line should be removed*/
    

您需要将dropwizard-assets包含在项目的依赖项中。

作为参考,刚刚创建了一个包含静态资产的示例项目。

相关内容

  • 没有找到相关文章

最新更新