如何处理 unmatched/unwanted 或 Java HTTP 服务器上的有效请求?

How to handle unmatched/unwanted or valid request on Java HTTP Server?

我有一个 Java HTTPServer 应用程序在 localhost:9090 上侦听 JSON-RPC 格式 POST 请求,如下所示;

 HttpServer server = HttpServer.create(new InetSocketAddress(9090), 0);
            System.out.println("> Server started at port number: "+ port);          
            server.createContext("/serverStatus", new RootHandler());
            server.createContext("/newTransaction", new EchoTransactionHandler());
            server.createContext("/", new EchoPostHandler());               
            server.setExecutor(null);
            server.start();

我正在通过 POST 和 JSON-RPC format.The 发送所有请求 EchoPostHandler class 满足所有 post 请求。 EchoPosthandler 通过查看请求主体来决定哪个函数将起作用。

server.createContext("/", new EchoPostHandler());

所有 post 请求的 url 是 localhost:9090/.

只有 2 个 GET 请求。其中之一显示服务器状态。它的 url 是 localhost:9090/serverStatus

我的问题是;当用户发送不需要的请求时,给它一个适当的答复。例如,它可以调用 localhost:9090/status 而不是调用 localhost:9090/serverStatus 来了解服务器状态。

在这种情况下,我想return一个正确的答案。

我该如何处理这个任务?

您需要为每个要处理的 /<something> 匹配一个 URL。在这方面,/status/serverstatus 是截然不同的。

一个解决方案可能是同时定义 URL 并向两者添加相同的处理程序:

HttpHandler hndSystemStatus = new RootHandler();
HttpServer server = HttpServer.create(new InetSocketAddress(9090), 0);
            System.out.println("> Server started at port number: "+ port);          
            server.createContext("/serverStatus", hndSystemStatus );
            server.createContext("/status", hndSystemStatus );
            server.createContext("/newTransaction", new EchoTransactionHandler());
            server.createContext("/", new EchoPostHandler());               
            server.setExecutor(null);
            server.start();

所有不需要的或非上下文定义的请求的 URL 作为基础 URL。 因此,我在EchoPostHandler中添加了一些控件来解决我的问题。