Ich werde versuchen, es kurz zu halten. Hier ist das Problem, das ich habe, wenn ich versuche, Spark-Filter zu verstehen. Ich versuche, eine einfache App zu erstellen, und eines der Dinge, die es tun sollte, ist, einen Fehlerbericht jedes Mal zu erstellen, wenn der Client einen http-Fehler z. Hier 404 oder 500 ist, wie meine app aussieht:Verwenden Sie Java Spark nach Filter, um benutzerdefinierte Aktion auszuführen, wenn ein 404 passiert
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!!");
}
});
}
}
Aus irgendeinem Grund der response
Parameter seinen Status-Attribut auf 0 gesetzt ist, wenn ich überprüft, ob es auf 404. Set Die Dokumentation sagt "after" filters are evaluated after each request and can read the request and read/modify the response
so, ich sollte in der Lage sein, es irgendwie zu tun (außer die Dokumente sind falsch).
Grundsätzlich versuche ich http Fehler mit einem after
Filter abzufangen, aber wenn ich versuche, die Antwort zu überprüfen, bekomme ich nicht, was ich erwarte.
Hat jemand eine Idee, was wäre eine andere Art und Weise, die gleiche Sache zu tun oder wie dies funktioniert?
Danke.
Auf diese Weise wird statische Datei laden –
Nein, wird es nicht, @KenBlock. Spark durchläuft alle Ressourcenhandler, bevor die Routen ausgeführt werden. Wenn eine interne/externe Ressource gefunden wird, wird sie von Spark ausgegeben und zurückgegeben. Dies kann in spark.servlet.SparkFilter.doFilter gesehen werden https://github.com/perwendel/spark/blob/master/src/main/java/spark/servlet/SparkFilter.java#L109 –
@TravisSpencer es tötet meine statische Datei wird geladen ... aber die 404er funktionieren ... so nah ... hast du ein funktionierendes Beispiel? –