问题描述
基本上我想使用以下正文执行 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
错误。
为什么会这样?
解决方法
由于您没有提供代码,所以事情就是这样。可能您正在接受 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();
}
如果您想在 REST 端接受 BaseInput
,您可以使用工厂模式。我建议您结帐以下内容:
Inheritance and REST API Controllers - Dealing with Subclasses