我正在使用Micronaut和Angular 4构建应用程序 .
我已将Micronaut配置为服务静态资源
micronaut:
router:
static:
resources:
enabled: true
mapping: /**
paths: classpath:public
一切正常(DefaultURL路线:http://localhost:8080/dashboard) . 加载Angular应用程序,用户与应用程序交互并正确浏览路径 .
在控制器中,我将服务器配置为重定向到index.html . 如果服务器中不存在该路径 .
@Get("/{[path:[^\\.]*}")
@Secured(SecurityRule.IS_ANONYMOUS)
@Produces(MediaType.TEXT_HTML)
public HttpResponse<?> refresh() {
return HttpResponse.redirect(URI.create("/index.html"));
}
但是当用户刷新页面时(例如按下F5) .
如果刷新后当前Url为“http://localhost:8080/userdetails/status”,则Angular应用程序将转到默认路由“http://localhost:8080/dashboard”,而不是用户所在的路径“http://localhost:8080/userdetails/status”
请帮助我谢谢
2 回答
它's because you'重定向到
/index.html
. 来自先前请求的信息将丢失 . 而不是重定向你应该直接渲染html .有几种工具可以做到这一点,包括使用
resourceResolver
来解析类路径上的html . 您可以返回StreamedFile
实例以将流呈现给响应 .可以注入解析器,您可以自己构建流式文件 .
https://docs.micronaut.io/latest/api/io/micronaut/core/io/ResourceResolver.html https://docs.micronaut.io/latest/api/io/micronaut/http/server/types/files/StreamedFile.html
找到我已经实施的工作代码 .