【问题标题】:Provide a POJO object as serialised string in REST API Request Payload在 REST API 请求有效负载中提供 POJO 对象作为序列化字符串
【发布时间】:2020-04-30 06:48:01
【问题描述】:

我有一个 REST API uploadFeed,它根据 feedType 上传用户提要(字符串值作为请求正文的一部分输入)。不同的 feedtype 在请求体中提供了不同的 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 在后端反序列化。例如

{
 "feedType":"TYPE2",
  "inputModel": "<<serialized object>>"
}

这是一个好的 REST API 设计还是有更好的选择。

【问题讨论】:

    标签: java api rest


    【解决方案1】:

    您可以使用JSONObject

    在 api 处接受 json 作为字符串并将其解析为 JSONObject 并根据您的逻辑使用它

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

    更多关于 JSONObject herehere

    【讨论】:

      【解决方案2】:

      您可以创建一个类来映射反馈请求与Map 字段为inputModel

      class FeedbackRequest{
         String feedType;
         Map<String, String> inputModel;
         //getters setters
      }
      

      【讨论】:

        猜你喜欢
        • 2015-05-07
        • 1970-01-01
        • 1970-01-01
        • 2015-07-05
        • 1970-01-01
        • 2021-08-13
        • 2016-08-10
        • 1970-01-01
        • 2019-11-27
        相关资源
        最近更新 更多