我使用Spark'(http://sparkjava.com/)静态文件路由,通过以下方式设置:
externalStaticFileLocation('.../public');
用于提供位于公共目录中的 index.html 页面。如此有效,当您点击服务器的网址时,您将获得 index.html 。到目前为止一切都很好......
但是,当请求包含特定的Accept标头时,我想覆盖此行为,例如 application / rdf + xml (基本上不同于默认的 text / html )。在这种情况下,我想返回一些特定数据,而不是 index.html 页面。
在Spark中有一种简单的方法吗?我无法在文档中找到任何解决方案......感谢您的任何提示!
答案 0 :(得分:0)
由于您要制作的行为发生变化,您现在要投放的内容不再是静态的,而是动态。
您需要从静态内容目录中删除index.html
并将其移至资源目录(通常为src/main/resources/templates
)。
然后,您需要为域名的根目录(/
)创建路线,并使用template engine投放内容。
使用模板引擎时,通常会将动态数据注入静态模板。通常你使用某种地图来做。
在text/html
的情况下,您的地图将为空,然后就像之前一样 -
提供静态页面。如果它是application/rdf+xml
,您将使用相关数据填充地图,然后提供生成的动态网页。
示例:
get("/", (request, response) -> {
if (isTextHtml(request)) {
// serve the index.html template as is (empty map, not null though)
// In this case index.html functinos as a static page
} else {
// use a map to have all relevant data for the index.html template
// In this case index.html functinos as a "real" template
}
});