如何在Java方法中调用自建Spring Boot REST API实现POST请求
嘿,作为新手能搞定Spring Boot的API已经很棒啦!既然Postman能正常调用,那用Java代码实现其实也不难,我给你一步步拆解,用Java 11+自带的HttpClient来做,不用额外加太多依赖,很方便:
步骤1:准备请求体对应的实体类
首先,你需要一个和API接收参数匹配的实体类,假设你的API接收包含name字段的JSON,那可以写个简单的User类:
import com.fasterxml.jackson.annotation.JsonProperty; public class User { @JsonProperty("name") private String name; // 带参构造器,方便创建对象 public User(String name) { this.name = name; } // 必须要有无参构造器,Jackson序列化/反序列化需要 public User() {} // Getter和Setter方法 public String getName() { return name; } public void setName(String name) { this.name = name; } }
步骤2:用Scanner获取用户输入
这部分很直观,就是读取控制台输入的名字:
import java.util.Scanner; public class ApiClient { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入名字:"); String userName = scanner.nextLine(); scanner.close(); // 调用API发送POST请求 sendPostRequest(userName); } // 后面会实现这个发送请求的方法 private static void sendPostRequest(String userName) { // 具体请求逻辑在这里 } }
步骤3:实现POST请求发送
这里用Java 11自带的HttpClient,配合Jackson把Java对象转成JSON格式的请求体:
如果是单独的Java应用(非Spring Boot项目),需要先在Maven里加Jackson的依赖(Spring Boot项目默认已经包含):
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.15.2</version> <!-- 用最新稳定版即可 --> </dependency>
然后完善sendPostRequest方法:
import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import com.fasterxml.jackson.databind.ObjectMapper; private static void sendPostRequest(String userName) { // 1. 创建HttpClient实例 HttpClient client = HttpClient.newHttpClient(); // 2. 构建要发送的User对象,并转成JSON字符串 User user = new User(userName); ObjectMapper objectMapper = new ObjectMapper(); String jsonBody; try { jsonBody = objectMapper.writeValueAsString(user); } catch (Exception e) { System.err.println("JSON序列化失败:" + e.getMessage()); return; } // 3. 构建POST请求,替换成你的API实际地址 HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("http://localhost:8080/api/users")) // 改成你Postman里用的地址 .header("Content-Type", "application/json") // 告诉服务器请求体是JSON格式 .POST(HttpRequest.BodyPublishers.ofString(jsonBody)) .build(); // 4. 发送请求并处理响应 try { HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println("请求状态码:" + response.statusCode()); System.out.println("响应内容:" + response.body()); if (response.statusCode() >= 200 && response.statusCode() < 300) { System.out.println("名字成功存入数据库啦!"); } else { System.err.println("请求失败,服务器返回错误:" + response.body()); } } catch (Exception e) { System.err.println("发送请求时出错:" + e.getMessage()); } }
关键注意点
- 一定要把
http://localhost:8080/api/users替换成你实际的POST API地址,就是你在Postman里测试的那个地址。 - Jackson的
ObjectMapper是Java和JSON互相转换的工具,和Spring Boot默认使用的序列化工具一致,兼容性拉满。 - 异常处理部分可以根据你的需求调整,比如增加日志记录或者重试逻辑。
- 如果你的Java版本低于11,可以改用
OkHttp或者Apache HttpClient,不过更推荐升级到Java 11+,自带的HttpClient足够好用。
内容的提问来源于stack exchange,提问作者Hisham Bawa
相关产品推荐
相关产品推荐

