![](/img/trans.png)
[英]How can I add request parameters to a static HTML page using Spring Boot?
[英]How can I determine if a request is for a static resource in Spring?
我正在寫一個記錄器來記錄Spring中的每個請求,但是我不想記錄任何靜態資源,例如CSS,JS,圖像或任何類似的東西。
我考慮過僅檢查擴展名,但是在某些情況下靜態內容文件沒有擴展名,並且我不想記錄它們。 我也可以檢查標頭,但我希望記錄器盡可能快,並且我必須進行某種字符串比較或解析,如果可能的話,我希望避免這種情況,因為此(和將來的)應用程序將處理大量的請求。
我基本上希望記錄不是靜態資源請求的任何內容,因為我可能希望在Web服務以及前端應用程序中使用相同的記錄器。
那么有沒有辦法判斷請求是否請求靜態資源? 我知道Spring特別需要映射到資源處理程序。 有什么方法可以知道請求是否已由資源處理程序處理?
所以我能夠使用Spring的MediaType.parseMediaTypes(String)
以一種非常干凈的方式解決此問題
通過檢查請求標頭中的“接受”字段,我可以假定請求類型。 我確定了可以接受的MediaType
,然后將它們放入HashSet
,例如
mediaTypeSet.add(MediaType.TEXT_HTML)
然后,我僅遍歷parseMediaType
的結果來確定這是否是我要記錄的請求。
boolean shouldLog(HttpServletRequest request){
String acceptHeader = request.getHeader("accept");
if(acceptHeader != null){
List<MediaType> mediaTypes = MediaType.parseMediaTypes(acceptHeader);
for(MediaType mediaType : mediaTypes){
if(mediaTypeSet.contains(mediaType)) return true;
}
}
return false;
}
在某些情況下,accept標頭讀取*/*
因此期望得到任何結果,但是在我的情況下,我感興趣的所有請求均已定義了MIME類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.