根据 Accept header 在 Spark 中覆盖静态文件路由
Overriding static file routes in Spark depending on the Accept header
我正在使用 Spark 的 (http://sparkjava.com/) 静态文件路由,通过以下方式设置:
externalStaticFileLocation('.../public');
用于提供位于 public 目录中的 index.html 页面等。如此有效,当您点击服务器的 URL 时,您会返回 index.html。到目前为止一切顺利...
但是,当请求包含特定的接受 header 时,我想覆盖此行为,例如 application/rdf+xml (与默认的text/html基本不同)。在那种情况下,我想要 return 一些特定数据而不是 index.html 页面。
在 Spark 中有实现此目的的简单方法吗?我在文档中找不到任何解决方案...感谢任何提示!
由于您想要做出的行为改变,您现在想要提供的内容不再是静态的,而是动态的。
您需要从静态内容目录中删除 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
}
});
我正在使用 Spark 的 (http://sparkjava.com/) 静态文件路由,通过以下方式设置:
externalStaticFileLocation('.../public');
用于提供位于 public 目录中的 index.html 页面等。如此有效,当您点击服务器的 URL 时,您会返回 index.html。到目前为止一切顺利...
但是,当请求包含特定的接受 header 时,我想覆盖此行为,例如 application/rdf+xml (与默认的text/html基本不同)。在那种情况下,我想要 return 一些特定数据而不是 index.html 页面。
在 Spark 中有实现此目的的简单方法吗?我在文档中找不到任何解决方案...感谢任何提示!
由于您想要做出的行为改变,您现在想要提供的内容不再是静态的,而是动态的。
您需要从静态内容目录中删除 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
}
});