我正在开发用于注册用户的 java REST API。我正在尝试检查发送到 POST 的用户是否其所有字段都有效,以便可以将其保存到数据库,但如果其中一个字段的类型无效,我找不到处理错误的方法。
我的模型User.java
public class User{
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private long id;
@Column
private String description;
@Column
private String date_joined;
@Column
private double age;
//setters and getters
}
用户资源方法:
@POST
@Consumes("application/json")
@Produces("application/json")
public Response postUser(User User)
{
//validate User fields and save to db
// if valid return following, else send Bad Request
return Response.status(Response.Status.CREATED).entity(User).build();
}
我使用ajax通过以下方式发送数据:
{
"date_joined":"27/12/19",
"description":"Currently looking for job",
"age":30
}
此示例效果很好,但我想验证发送的数据是否为无效类型,例如:
{
"date_joined":"27/12/19",
"description":"Currently looking for job",
"age": "thirty"
}
这会产生以下错误
org.codehaus.jackson.map.JsonMappingException: Can not construct instance of double from String value 'thirty': not a valid Double value
有没有办法捕获此类错误?因此,稍后我可以向用户发送一条消息,告知他们发送了无效数据
最佳答案
解决方案是否可以捕获异常并在出现 JsonMappingException 时返回错误消息?
try {
return Response.status(Response.Status.CREATED).entity(User).build();
} catch (JsonMappingException e) {
// Return a 4xx statuscode to indicate a client error and some json containing e.getMessage()
}
请告诉我这是否有用!谢谢!
:)
关于java - Spring Java Rest处理反序列化时的无效类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59505292/