gpt4 book ai didi

java - dropwizard 应用程序中的配置更改以与 react browserHistory 一起使用

转载 作者:行者123 更新时间:2023-11-29 04:27:26 24 4
gpt4 key购买 nike

我有一个 react 应用程序在 dropwizard 服务器上运行。 bundle.js 在/ui 上提供。当我打开/ui 上的 url 并导航应用程序(和转到/ui/content)时,它工作正常。但是当我尝试刷新特定页面(如/app/content)时,它会显示 404

我知道客户端渲染和服务器端渲染,而且我需要对/ui 执行 GET 调用并将其余部分路由到客户端,但我找不到任何文档如何在 dropwizard 中完成。

我也知道使用 hashHistory 代替 browserHistory 会起作用(因为 url 的哈希部分不会发送到服务器),但我想知道是否这可以通过 browserHistory 来完成。

有关于如何配置 express 服务器的文档,但我找不到关于 jetty/dropwizard 的任何内容。

最佳答案

在 Dropwizard 级别,您可以使用 servlet 过滤器来重写 URL。一种流行的实现是 Tucky UrlRewriteFilter .您将按如下方式实现它:

  1. 向 Dropwizard 注册过滤器:

    @Override
    public void run(ExampleConfiguration configuration, Environment environment) {
    FilterRegistration.Dynamic registration = environment.servlets()
    .addFilter("UrlRewriteFilter", new UrlRewriteFilter());
    registration.addMappingForUrlPatterns(null, true, "/*");
    registration.setInitParameter("confPath", "urlrewrite.xml");
    }
  2. urlrewrite.xml 配置文件添加到您的src/main/resources,添加重写规则

    <urlrewrite>
    <rule>
    <from>^/(?!(api|static/|manifest\.json|assets-manifest\.json|favicon\.ico)).*$</from>
    <to type="forward">/index.html</to>
    </rule>
    </urlrewrite>

    上述规则指出,如果请求路径与上述正则表达式匹配,则将请求转发到index.html 文件。我用来测试的是 create-react-app ,其中输出是匹配器中列出的一些文件。不应转发这些文件。

    正则表达式使用了否定的前瞻性,所以它就像一个否定。看起来我是在说如果路径与那些文件匹配,则转发,但实际上恰恰相反。如果您不使用 create-react-app,那么您的正则表达式看起来会有所不同。重点是否定你不想转发的文件。

我整理了一个工作演示。查看GitHub repo .

关于java - dropwizard 应用程序中的配置更改以与 react browserHistory 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45560374/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com