You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

雾计算架构中调用REST接口检查用户存在性触发404 null异常

问题分析与解决方案:RestTemplate调用抛出HttpClientErrorException(404 null)

我之前碰到过几乎一模一样的RestTemplate调用坑,结合你这个雾计算架构的场景,咱们来理清楚整个问题的来龙去脉和解决办法:

场景回顾

你正在搭建的雾计算架构中:

  • 云端部署了2台负责数据库交互的服务器
  • 客户端-服务端应用的服务端作为雾端服务器
  • 在用户注册验证阶段,调用REST接口检查用户是否存在时出现404 null异常:直接访问http://localhost:8081/user/test能正常返回用户JSON,但用RestTemplate调用就抛出HttpClientErrorException,最终定位到是User类构造器错误导致的。

为什么直接调用正常,RestTemplate就报错?

直接通过浏览器/Postman访问接口正常,说明接口的业务逻辑、数据库交互完全没问题——问题出在RestTemplate的响应反序列化环节。

当RestTemplate拿到接口返回的JSON后,需要把它转换成User对象,但如果User类的构造器不满足Jackson(Spring默认JSON处理工具)的要求,就会反序列化失败,框架会把这个失败伪装成404 null的异常返回,很容易误导人以为是接口找不到。

构造器到底哪里错了?

Jackson反序列化JSON到对象时,必须满足以下条件之一:

  • 类存在无参构造器:Jackson需要先通过无参构造器创建空对象,再逐个给属性赋值
  • 如果用有参构造器,必须给构造器的每个参数添加@JsonProperty注解,明确对应JSON里的字段名;或者用Lombok的@AllArgsConstructor+@NoArgsConstructor确保无参构造器存在

如果你的User类只有有参构造器,且没做上述处理,RestTemplate根本没法创建User对象,自然就抛出异常了。

修复方案

方案1:手动添加无参构造器

给User类补上无参构造器,同时保留你需要的有参构造器:

public class User {
    private String username;
    private String email;

    // 必须的无参构造器
    public User() {}

    // 业务需要的有参构造器
    public User(String username, String email) {
        this.username = username;
        this.email = email;
    }

    // 别忘了getter和setter方法
    public String getUsername() { return username; }
    public void setUsername(String username) { this.username = username; }
    public String getEmail() { return email; }
    public void setEmail(String email) { this.email = email; }
}

方案2:用Lombok简化代码

如果项目里已经引入Lombok,直接给User类加这三个注解,一键生成无参/全参构造器、getter/setter等:

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private String username;
    private String email;
}

验证修复

调整完User类后,再用RestTemplate调用接口,就能正常把JSON转换成User对象,不会再出现404 null的异常了。

内容的提问来源于stack exchange,提问作者Rafał Sokalski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:41:57