dropwizard 应用程序中的配置更改以与 React browserHistory 配合使用

2023-12-14

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

我了解客户端渲染和服务器端渲染,而且我需要做一个GET调用 /ui 并将其余部分路由到客户端,但我找不到任何有关如何执行此操作的文档dropwizard.

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

有关于如何配置的文档express切断但我找不到任何东西jetty/dropwizard.


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

  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. Add the 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,那么您的正则表达式将会有所不同。重点是否定您不想转发的文件。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

dropwizard 应用程序中的配置更改以与 React browserHistory 配合使用 的相关文章

随机推荐

  • 绝对div覆盖iframe边框?

    我想知道是否有一种方法可以让一个绝对定位的 div 悬停在 div 所在的 iframe 的边框上 这可以做到吗 我的情况 我有一个 iframe 其中包含文件列表 每个文件的右端有一个按钮 我想要一个带有一些功能 如上下文菜单 的 div
  • Laravel - env() 总是返回 null

    我试图找出为什么我的env 助手总会回来null 这会引起麻烦 尤其是在app php文件 在哪里env 默认情况下广泛使用的助手 也许有什么神秘的服务器设置 我的环境文件 APP ENV production APP KEY base64
  • 在前台时不显示通知

    我正在使用 Firebase 管理 SDK 从节点服务器发送推送通知 但在 iOS 上 我只想在应用程序处于后台 终止时显示通知 而不是在前台时显示通知 目前它会始终显示通知 这是我的有效负载 const payload data data
  • 如何使用 AppCompat v.7 显示和隐藏 ActionBar

    我有一个显示文本的简单应用程序 该应用程序从一个带有几个选项的主屏幕开始 例如 一个导致有关该应用程序的信息的信息按钮 一个允许用户查看可以显示的所有单独文本片段的浏览按钮 主按钮通向另一个显示文本的屏幕 通过左右滑动 他可以看到不同的文本
  • FMX - Trayicon 消息处理

    我在使用 FMX XE3 Windows 设置托盘图标时遇到问题 我使用的代码可以在无数线程中找到 但我没有得到图标工作的消息处理 为了说明这一点 我创建了一个测试应用程序 它在 FormCreate 中设置 TrayIcon 数据并使用按
  • 伪元素中是什么使伪元素成为伪元素?

    在我的另一个问题中CSS 中的 伪 是什么意思 我得到了这个答案 伪元素是行为类似于元素但不是元素的东西 是什么使得伪元素不是元素 伪元素不在 dom 中 这就是它不是元素的原因 它是由 CSS 创建的元素 伪元素无法被各种技术看到或操纵
  • 使两个重叠的 div 都可点击?

    是否可以制作两个重叠的 div 并且都可以点击 我已将 div 附加到两个容器 container and container2 他们的风格一模一样 只是有一个不同flex direction column 其中之一是flex direct
  • 使用 pyodbc 从 WSL2 连接到 Windows 上的 SQL Server - 连接超时

    我正在尝试从 WSL2 连接到 Windows 上的 SQL 服务器 但收到连接超时错误 我正在使用这段代码 import pyodbc server DESKTOP LFOSSEF database sportsanalytics use
  • 如何因不活动而注销用户

    纯服务器端 PHP 每次用户提交表单时 我都会更新数据库中的 上次活动 时间 我想进行定期检查并强制注销非活动用户以释放许可证 我该怎么做呢 我是否还应该将会话 ID 存储在数据库中 然后销毁会话 这将为另一个用户释放许可证 当第一个用户最
  • 对齐捕获的深度和 RGB 图像

    之前有过提问 here here and here 与我的问题相关 但是我的问题有一个不同的方面 我在之前提出的任何问题中都没有看到过 我使用 Kinect 深度传感器获取了用于研究的数据集 该数据集采用 png 图像格式 用于特定时刻的深
  • Swagger-ui 与 Spring 安全性

    我有一个带有身份验证服务的简单 REST 应用程序 我尝试向其中添加 swagger 和 swagger ui 但我只能看到我的端点 v2 api docs In swagger ui html我只看到端点组 但无法扩展任何列表 在 chr
  • 本地化 (l10n):为我的 mozilla 插件设置默认语言

    我正在开发一个 Mozilla 插件并实现 l10n 我的问题是 如何为我的插件设置默认语言 当我的插件不支持语言时 它会切换到默认语言 当 Mozilla Firefox 的语言改变时 插件会改变它的语言环境吗 如何更改我的 Firefo
  • 图像周围的 Silverlight 文本

    我正在尝试将文本包裹在图像周围 就像使用 html float 属性一样 有没有办法在 silverlight 3 中实现这一点 Thanks 我不久前解决了这个问题 据我所知 确实没有什么好方法 这会起作用 尽管只是很痛苦 为了简化解释
  • 如何配置 PyCharm 在没有 ^space 的情况下自动完成代码?

    When typing in PyCharm I used to automatically get code completion suggestions without having to hit Ctrl Space I must h
  • 没有提升的 WCF wsdualhttpbinding 客户端

    我创建了一个 Windows 服务 服务器 和一个使用 WCF wsdualhttpbinding 回调功能的 WPF 客户端 两个软件之间的所有内容都可以正常工作 但我遇到的问题是客户端需要以管理员权限运行才能工作 这是可以理解的 因为它
  • 适用于 VB6 和 .net 应用程序的最佳 IPC

    在我们的应用程序 文档管理系统 中 我们应该收到屏幕更改的通知 或通知其他程序屏幕更改 以便使两个应用程序查看相同的数据 一个是订单履行应用程序 另一个是订单履行应用程序原始传真的文档查看器 履行应用程序是用 vb6 编写的 文档管理器是用
  • SQL Server 文件名和版本[关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我很幸运能够成为一台服务器的管理员 但我不知道这台服务器上有多少个版本的sql server 当我打开Microsoft SQL Server文件时 有一些名为80 90 100 1
  • 线性渐变在 IE 11 中不起作用

    我有一个 css 规则 可以在 chrome firefox 中正常工作 并且曾经在 IE 中工作 现在我看似有效的 css 不起作用了 s tour border radius 5px margin 0 auto width 250px
  • Java HttpClient - 通过代理发布文件

    我尝试使用代理从我的网络应用程序调用外部网站 此外 还需要在此外部网站上执行 POST 请求 我正在使用 tomcat7 org apache httpcomponents 4 3 4 spring 在没有代理的情况下进行跟踪是有效的 我得
  • dropwizard 应用程序中的配置更改以与 React browserHistory 配合使用

    我有一个react应用程序运行在dropwizard服务器 这bundle js在 ui 上提供 当我打开 ui 上的 url 并导航应用程序 并转到 ui content 时 它工作正常 但是当我尝试刷新特定页面 例如 app conte