【问题标题】:I want to send a List(which is a member of an object) from Postman to Spring REST API我想从 Postman 发送一个列表(它是一个对象的成员)到 Spring REST API
【发布时间】:2020-10-14 13:45:37
【问题描述】:

我有一个对象,它的属性是一个列表。我想将此对象从 Postman 发送到我的服务。我正在使用 Spring 5.2.7(Spring MVC,而不是 SpringBoot)和 Hibernate 5.4.17 和 Java 8。我的问题与这个非常相似:I want to send a Postman POST request with an Array: members: ["william", "eric", "ryan"]

这是我试图在 Postman 中传递的类(POST 方法):

public class ChatDescriptionDto {

    private String chatID;

    private List<String> members;

    private String chatType;

    public String getChatID() {
        return chatID;
    }

    public void setChatID(String chatID) {
        this.chatID = chatID;
    }

    public List<String> getMembers() {
        return members;
    }

    public void setMembers(List<String> members) {
        this.members = members;
    }
    
    public void addMembers(List<String> members)
    {
        if(this.members == null)
            this.members = new ArrayList<>();
        this.members.addAll(members);
    }
    
    public void addMember(String member)
    {
        if(this.members == null)
            this.members = new ArrayList<>();
        this.members.add(member);
    }

    public String getChatType() {
        return chatType;
    }

    public void setChatType(String chatType) {
        this.chatType = chatType;
    }
}

我试过了,但没用:

{
    "chatID": "123",
    "members": ["P2001222833","P2001640916"],
    "chatType": "personal"
}

编辑:这是我的控制器:

@PostMapping("/initiateChat")
public String initiateChat(@RequestBody ChatDescriptionDto chat)
{
    return chatServiceLocal.initiateChat(chat)?"Chat Description created":"Failure! Could not save.";
}

编辑2:我在问题中写的方法"members": ["P2001222833","P2001640916"],是正确的。原来,服务器出现了一些错误,所以它永远不会启动,我也没有检查。

【问题讨论】:

  • 错误是什么?你如何接收对象?什么是内容类型等?请向我们提供更多详细信息
  • 你能提供你用来接收对象的控制器的代码吗?

标签: java spring spring-mvc postman


【解决方案1】:

没有关于您正在使用的 Controller 类的信息,我首先假设您收到的是一个空对象,这意味着 Spring 只是跳过了序列化。当您没有将方法的参数指定为@RequestBody 时,就会出现这种情况。首先,确保您确实有注释。

@RestController
@RequestMapping("/")
public class TestController {

    @RequestMapping(value = "/test", method = RequestMethod.POST)
    public ResponseEntity test(@RequestBody ChatDescriptionDto dto) {
        System.out.println(dto);
        return ResponseEntity.ok().build();
    }

}

如果不是这样,我认为问题出在您使用的内容类型上。 Spring 默认使用 JSON,但您可以在端点的配置中更改它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-26
    • 2015-08-17
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-07
    • 2018-02-14
    • 1970-01-01
    相关资源
    最近更新 更多