【问题标题】:When post request is done in postman it passes all the values as NULL当 post 请求在邮递员中完成时,它会将所有值传递为 NULL
【发布时间】:2020-01-18 18:25:09
【问题描述】:

这是我的后端,该方法采用学生对象和字符串 ID。

@PostMapping(path="/edit/student")
@RequestMapping(value = "/edit/student", method = RequestMethod.POST)
public void editStudent(@RequestBody Student student,String id){
    ss.editStudent(student,id);
}

当我尝试使用邮递员进行发布请求时,它会为所有内容发送 null。

{
"student":{
    "firstname": "jay",
    "lastname": "patel",
    "studentId": "2",
    "email": "temp163@gmail.com"
},
"id":"1"}

看看这个。这可能有助于理解。 Backend gets everything as null.

这是邮递员打来的电话。 Postman call

【问题讨论】:

  • 添加更多细节...参考此链接stackoverflow.com/help/how-to-ask
  • 最佳做法是发布在您的问题中复制问题所需的最少代码。没有人愿意从图像中转录您的代码来复制您的问题或对其进行测试。
  • 不要以 png 格式发布文本。这太粗鲁了……

标签: java postman


【解决方案1】:

看起来您作为 POST 有效负载发送的 JSON 不是学生对象的表示。相反,它是一个包含两个成员的对象的表示,一个名为student 的学生对象和一个名为id 的字符串。

{
  "student":{ //<-- This is a Student object
    "firstname": "jay",
    "lastname": "patel",
    "studentId": "2",
    "email": "temp163@gmail.com"
  },
  "id":"1" //<-- This is a String
} 

如果该有效负载被反序列化为 Java 类,它将如下所示:

public class SomeObject {
    public Student student;
    public String id;
}

简而言之,您的 REST 端点需要一个 Student 对象,但这不是您提供给它的对象,并且它无法将此“SomeObject”表示反序列化为 Student 实例。

尝试将您的有效负载更改为仅代表端点期望的 Student 对象:

{
  "firstname": "jay",
  "lastname": "patel",
  "studentId": "2",
  "email": "temp163@gmail.com"
}

【讨论】:

    猜你喜欢
    • 2022-06-16
    • 2017-12-30
    • 2021-05-12
    • 2018-05-04
    • 1970-01-01
    • 2018-06-25
    • 1970-01-01
    • 2021-01-23
    • 2019-04-28
    相关资源
    最近更新 更多