我會盡量保持簡短。以下是我在嘗試理解Spark過濾器時遇到的問題。我試圖創建一個簡單的應用程序,它應該做的一件事是每當客戶端即將看到http錯誤時創建錯誤報告,例如當如果它被設置爲404。我檢查文檔說"after" filters are evaluated after each request and can read the request and read/modify the response
所以,我使用Java Spark過濾後,404發生時運行自定義操作
import static spark.Spark.*;
public class MyApp {
public static void main(String[] args) {
get("/hello", (req, res) -> "{\"status\":\"OK\"}");
after((request, response) -> {
if (response.raw().getStatus() == 404) {
// here run the code that will report the error e.g.
System.out.println("An error has occurred!!");
}
});
}
}
出於某種原因,response
參數有其狀態屬性設定爲0:404或500。這裏是我的應用程序看起來像應該能夠以某種方式做到這一點(除非文檔錯誤)。
基本上,我試圖攔截HTTP錯誤使用after
篩選器,但是當我嘗試檢查響應時,我沒有得到我所期望的。
有沒有人有一個想法什麼會做不同的方式做同樣的事情或如何使這項工作?
謝謝。
這種方式會殺死靜態文件加載 – 2015-10-16 18:58:30
不,它不會@KenBlock。 Spark在運行路由之前通過所有資源處理程序進行循環。如果找到內部/外部資源,Spark將輸出並返回。這可以看出spark.servlet.SparkFilter.doFilter https://github.com/perwendel/spark/blob/master/src/main/java/spark/servlet/SparkFilter.java#L109 – 2015-10-25 14:44:29
@TravisSpencer它殺死我的靜態文件加載...但404的工作...如此接近...你有一個工作的例子嗎? – 2016-05-26 18:03:32