在REST API请求有效载荷

时间:2020-04-30 06:48:01

标签: java api rest

我有一个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设计,还是有更好的选择。

2 个答案:

答案 0 :(得分:0)

您可以创建一个类,以使用Map的{​​{1}}字段映射反馈请求,

inputModel

答案 1 :(得分:0)

您可以使用JSONObject

在api上将json作为字符串接受,并将其解析为JSONObject并根据您的逻辑对其进行使用

@RequestBody String jsonString
JSONObject jsonObj = new JSONObject(jsonString);

有关JSONObject herehere的更多信息。