java - 在过滤器之后使用 Java Spark 在发生 404 时运行自定义操作

标签 java spark-java

我会尽量保持简短。这是我在尝试理解 Spark 过滤器时遇到的问题。我正在尝试创建一个简单的应用程序,它应该做的一件事是在每次客户端即将看到 http 错误时创建错误报告,例如404 或 500。这是我的应用程序的样子:

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!!");
            }
        });
    }
}

出于某种原因,当我检查它是否设置为 404 时,response 参数的状态属性设置为 0。文档说 “after”过滤器在每个请求后被评估并且可以读取请求并读取/修改响应 所以,我应该能够以某种方式做到这一点(除非文档有误)。

基本上,我尝试使用 after 过滤器拦截 http 错误,但是当我尝试检查响应时,我没有得到预期的结果。

有没有人知道用什么不同的方式来做同样的事情或者如何让它发挥作用?

谢谢。

最佳答案

我使用通配符路由解决了这个问题。我没有调用 after 方法,而是为绑定(bind)“*”路由的每个 HTTP 方法添加了一个路由。

将它们放在 Main 方法的底部很重要,这样如果没有解决任何路由,这些总是会被触发。

这是一个例子:

import static spark.Spark.*;

public class MyApp {
    public static void main(String[] args) {
        get("/hello", (req, res) -> "{\"status\":\"OK\"}");

        get("*", (request, response) -> {
            System.out.println("404 not found!!");
            // email me the request details ...    
        );
    }
}

关于java - 在过滤器之后使用 Java Spark 在发生 404 时运行自定义操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27051435/

相关文章:

java - 我可以使用什么来代替 Java 中的 Vector?

java - 如何使用连接池

java - 在 Kotlin 中启用 CORS 时,Spark 在访问路线时返回空响应

java - 无法编译 : sparkjava exception handling

java - SparkJava JOOQ 使用 Guice 进行依赖注入(inject)

java - 如何动态调用kotlin的object(singleton)方法?

java - 在匿名类中的方法中添加 'final' 关键字是否有任何效果?

java - 如何将路由与单个主方法分开,以便我可以处理差异类(如 servlet)中的请求

java - 学习Java人脸识别技术

java - Spark java : how to handle multipart/form-data input?