Cercherò di mantenerlo breve. Ecco il problema che sto provando mentre cercavo di capire i filtri Spark. Sto provando a creare un'app semplice e una delle cose che dovrei fare è creare un rapporto di errore ogni volta che il client sta per vedere un errore http, ad es. 404 o 500. Ecco come il mio app assomiglia:Usa Java Spark dopo il filtro per eseguire un'azione personalizzata quando accade un 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!!");
}
});
}
}
Per qualche ragione, il parametro response
ha il suo attributo di stato impostato a 0 quando sto controllando se è impostato a 404. La documentazione dice "after" filters are evaluated after each request and can read the request and read/modify the response
così, dovrebbe essere in grado di farlo in qualche modo (a meno che i documenti non siano corretti).
Fondamentalmente, sto cercando di intercettare gli errori http utilizzando un filtro after
ma quando provo a verificare la risposta non ottengo quello che mi aspetto.
Qualcuno ha un'idea di quale sarebbe un modo diverso di fare la stessa cosa o come farlo funzionare?
Grazie.
In questo modo si elimina il caricamento di file statici –
No, non lo farà, @KenBlock. Spark attraversa tutti i gestori di risorse prima di eseguire i percorsi. Se viene trovata una risorsa interna/esterna, Spark la restituirà e restituirà. Questo può essere visto in spark.servlet.SparkFilter.doFilter https://github.com/perwendel/spark/blob/master/src/main/java/spark/servlet/SparkFilter.java#L109 –
@TravisSpencer mi uccide caricamento di file statici ... ma gli 404 funzionano ... così vicini ... hai un esempio funzionante? –