我想从Postman向Spring REST API发送一个List(对象的成员)

vbopmzt1  于 2022-11-07  发布在  Postman
关注(0)|答案(2)|浏览(188)

我有一个对象,它的属性是一个List。我想把这个对象从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"],是正确的。结果,服务器中有一些错误,所以它从来没有启动过,我没有检查。

j13ufse2

j13ufse21#

由于没有关于您正在使用的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,但您可以在端点的配置中更改它。

t1qtbnec

t1qtbnec2#

要发送简单对象请求,请执行以下操作:

{

"member":"kola"

}

要发送列表对象请求,请执行以下操作:

{

"member": ["kola","wale","ojo"]

}

这更像是列出数组元素。
在此之后弹出的任何错误,基本上都不是因为您发送的请求。

相关问题