不使用像 Spring Boot 这样的框架,使用 Java 内置的HttpServer
(从 Java 1.7 开始引入)来创建一个简单的 Web 后端,处理xxxx/test/query
接口,接收 JSON 请求体并返回字符串响应。
示例代码:
java">import com.google.gson.Gson;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.net.HttpURLConnection;
import java.net.URI;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;public class SimpleWebServer {public static void main(String[] args) throws IOException {HttpServer server = HttpServer.create(new InetSocketAddress(8080), 0);server.createContext("/test/query", new QueryHandler());server.setExecutor(null);server.start();System.out.println("Server started on port 8080");}static class QueryHandler implements HttpHandler {@Overridepublic void handle(HttpExchange exchange) throws IOException {if ("POST".equals(exchange.getRequestMethod())) {// 读取请求体BufferedReader reader = new BufferedReader(new InputStreamReader(exchange.getRequestBody(), StandardCharsets.UTF_8));StringBuilder requestBody = new StringBuilder();String line;while ((line = reader.readLine()) != null) {requestBody.append(line);}reader.close();// 这里可以对请求体进行处理,比如解析JSON数据// 目前只是简单打印请求体System.out.println("Received request body: " + requestBody.toString());// 构造响应String response = "这是接口的响应字符串";exchange.sendResponseHeaders(HttpURLConnection.HTTP_OK, response.length());OutputStream outputStream = exchange.getResponseBody();outputStream.write(response.getBytes(StandardCharsets.UTF_8));outputStream.close();} else {// 处理非POST请求exchange.sendResponseHeaders(HttpURLConnection.HTTP_METHOD_NOT_ALLOWED, 0);}}}
}
代码中:
- 主类
SimpleWebServer
启动一个 HTTP 服务器,监听在本地的 8080 端口。 QueryHandler
类实现了HttpHandler
接口,处理/xxxx/test/query
路径的请求。- 当接收到 POST 请求时,读取请求体内容,目前只是简单打印请求体内容,然后构造一个字符串响应返回给客户端。
- 如果接收到的不是 POST 请求,则返回
HTTP_METHOD_NOT_ALLOWED
状态码。
上述代码使用了com.sun.net.httpserver
包,这是 Java 内部的 API,在一些环境中可能有限制。另外,代码中使用了 Google 的 Gson 库来处理 JSON,需要在项目中引入 Gson 库。