我正在使用Java 8开发RESTful服务。我的资源类中具有以下方法,该方法可响应POST
请求。
@POST
public Response store(SomeType myInstance){ ... }
通常,如果可以直接映射json
请求,则可以轻松地对该序列进行反序列化。但是,在这种情况下,SomeType
是一个复杂的对象,其中包含持久存储在数据库中的其他对象。
是否可以捕获请求,弄清类型,构建对象SomeType
并将其传递给store
方法?我倾向于某种类型的中间件,但是我不确定该依赖项如何工作。
注意:出于安全原因,我在可以使用的第三方包装中非常有限。所以我不能使用开箱即用的解决方案。
答案 0 :(得分:1)
我认为您的用例可以通过Jackson的CustomDeserializer功能来解决。
SomeType
父类应该有一个CustomDeserializer。如果您需要从数据库中获取更多数据并填充 SomeType1 , SomeType2 和 SomeType3 字段,则可以通过检查对象类型,在处理程序中完成此操作。
@POST
public Response store(SomeType myInstance) {
if (myInstance instanceof SomeType1) {
// fetch from database and populate more fields
} else if (myInstance instanceof SomeType2) {
...
}
...
}