我有一个 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 格式发送所有请求。EchoPostHandler 类满足所有发出的 POST 请求。 EchoPosthandler 通过查看请求正文来决定哪个函数将起作用。
server.createContext("/", new EchoPostHandler());
所有post请求的url都是localhost:9090/。
只有 2 个 GET 请求。其中之一显示服务器状态。它的网址是localhost:9090/serverStatus
我的问题是;当用户发送不需要的请求时,给出适当的答案。例如,它可以调用localhost:9090/status
而不是调用localhost:9090/serverStatus
来了解服务器状态。
在这种情况下我想返回正确的答案。
我该如何处理这个任务?
最佳答案
每个 /<something>
都需要一个匹配的 URL你想要处理。在这方面,/status
和/serverstatus
非常明显。
一种解决方案可能是定义两个 URL 并向两个 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();
关于java - 如何处理 Java HTTP Server 上不匹配/不需要的或有效的请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54195482/