我有一个REST API uploadFeed,它基于feedType(将字符串值作为输入输入到请求正文中)上传用户feed。不同的Feed类型在请求主体中提供了不同的pojo模型。
例如,如果feedType为“ TYPE1”,则API的请求正文应如下所示:
{
"feedType":"TYPE1",
"inputModel": {
"a": "somevalue"
"b" : "somevalue",
"c" : "somevalue",
}
}
如果feedType为“ TYPE2”,则API的请求正文应如下所示:
{
"feedType":"TYPE2",
"inputModel": {
"x": "somevalue"
"y" : "somevalue",
"z" : "somevalue",
}
}
现在,我要避免为两个feedType提供不同的REST API端点。我正在考虑宁愿提供inputModel的序列化对象作为输入,然后根据feedType在后端反序列化。对于.e
{
"feedType":"TYPE2",
"inputModel": "<<serialized object>>"
}
这是一个不错的REST API设计,还是有更好的选择。
答案 0 :(得分:0)
您可以创建一个类,以使用Map
的{{1}}字段映射反馈请求,
inputModel
答案 1 :(得分:0)
您可以使用JSONObject
在api上将json作为字符串接受,并将其解析为JSONObject并根据您的逻辑对其进行使用
@RequestBody String jsonString
JSONObject jsonObj = new JSONObject(jsonString);