首页 > 解决方案 > Java REST 服务返回 400

问题描述

基本上我想用以下主体做一个 POST 请求:

public class Input extends BaseInput {
    private static final long serialVersionUID = 1L;
    
    private String example;

    // Getter & Setter
}
public class BaseInput implements Serializable {
    private SomeBaseElement sbe;

    // Getter & Setter
}
public class SomeBaseElement implements Serializable {
    private static final long serialVersionUID = 1L;

    private String baseString;

    // Getter & Setter
}

基本上我知道这SomeBaseElement是问题所在,因为如果我从BaseInput请求中删除它是成功的。但是有了它,我得到了一个400 BAD REQUEST错误。

为什么会这样?

标签: javarestresteasy

解决方案


由于您没有提供您的代码,这就是问题所在。可能您正在接受 REST 服务BaseInput对象,但您正在发布一个Input对象,即400-Bad Request. 您可以使用以下方法来接受Input对象。

@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@Path("/test")
public Response test(Input input) {
    return Response.ok().build();
}

如果您想BaseInput在 REST 端接受,则可以使用工厂模式。我建议您查看以下内容: 继承和 REST API 控制器 - 处理子类


推荐阅读