如何使用Spring Boot将特定的POST请求发送到API

时间:2018-06-07 15:08:54

标签: java json api spring-boot controller

我想为我的Spring启动应用程序创建一个Post方法,我有一个实体警报,下面的元素,但我需要向我的API发送一个特定的请求格式,我尝试使用save()方法但它不起作用,有人知道如何为Json请求指定每个元素吗?以及当我们使用Serializable时如何转到下一个元素?非常感谢你的帮助

Customer  |  Attribute
A         |  3
B         |  2
C         |  0

对于我的控制器:

{
  "deviceEUIs": [
    "1122233344"
  ],
  "alertModes": [
    {
      "type": "MOTION",
      "notifyByEmail": true,
      "notifyBySMS": true,
      "notifyOnInterface": true
    }
  ]
}


@Entity
@Table(name = "Alert")
public class Alert implements Serializable{

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(generator = "uuid2")
    @GenericGenerator(name = "uuid2", strategy = "uuid2")
    @Column(columnDefinition = "BINARY(16)")
    private UUID alertRef;

    @OneToMany(mappedBy = "alert", cascade = CascadeType.ALL)
    private Set<AlertModes> alertModes;

    @ManyToMany(cascade = CascadeType.ALL)
    @JoinTable
    private Set<Subscriber> subscribers;

    @ManyToMany(mappedBy = "alerts")
    private Set<Device> devices;

    @Column(name = "last_update", columnDefinition = "DATETIME", nullable = false)
    @Temporal(TemporalType.TIMESTAMP)
    private Date lastUpdate;

3 个答案:

答案 0 :(得分:0)

你正在正确地做所有事情,但只是没有对你的空警报实例做任何事情,因此没有发布任何内容。为了发布你需要做一些事情,比如alert.setSomething(something)然后是alertRepository.save(alert)因为你当前没有保存任何东西

答案 1 :(得分:0)

您很可能需要创建正确的设备对象。

{
    devices:[
        {
        "deviceEUIs": "1122233344"
        },{
        "deviceEUIs": "1122233355"}
    ]
}

您在上述评论中发布的错误。将此添加到实体。

 @PrePersist
 @PreUpdate
 public void onUpdate() {
      lastUpdate= new Date();
 }

有一个解决方案here,它向您展示如何在超类中使用它,并继承您想要拥有这些字段的所有类。

答案 2 :(得分:0)

您是否尝试过使用:

@Column(可为空= FALSE)
@Temporal(TemporalType.TIMESTAMP)
@LastModifiedDate //这会在对象更改时自动生成新日期 private Date updatedAt;