通过一次交易将PUT / GET / POST请求发送到JHipster

时间:2020-11-02 10:02:09

标签: jhipster

我对Jhipster还是陌生的,在理解其某些功能时遇到问题。因此,这是我的问题。

我有以下两个微服务。 Java中的微服务1(MS1)具有以下数据结构:

Lead {
Customer customer;
Deal deal;
}

Customer{
Integer phoneNumber;
etc...
}

Deal{
Integer value;
etc...
}

微服务2(MS2)是JHipster生成的数据库。 该数据库仅具有以下SQL表:

CUSTOMER
LEAD

在微服务1中发生更改时,我从MS1向MS2发送了2个单独的PUT请求。

  • 首先请求通过MS2中的/customer API更新客户的请求
  • 如果更新正常,则发送请求以更新MS2中的DEAL /deal API

要成功更新潜在客户,PUT给客户的请求,交易都应该可以。如果更新一个表失败,则所有表都将失败。

因此,我想避免发送2个单独的请求,以避免CUSTOMER请求正常且DEAL请求由于任何原因而失败的情况。 如果可能的话,我想通过诸如/lead之类的API发送一次交易,该API会覆盖两个表。

在不为LEAD创建额外表的情况下实现此目标的最佳方法是什么? 例如,我应该使用Jhipster生成的图层/服务。 如果可能(但不是必需),我希望避免接触经常重新生成的代码。 (例如,客户,交易)

如果已经存在,请也将我引向文档。它们很难理解,所以我不确定当前是否有专门解决此问题的方法。谢谢。

1 个答案:

答案 0 :(得分:0)

从CRUD REST API直接公开JPA实体时,这是一个常见问题。 您的持久性模型不必是您的API模型。

如果2个实体相关并且应该在同一事务中进行更新,则意味着应使用一个原子API请求对其进行更新。

因此,您可以使用DTO定义一个新资源,将两个实体组合在一起,并由新的API公开,您可以手动编写代码(因此无需其他表)。

当您使用微服务体系结构时,MS1和MS2之间可能也会遇到类似的情况,在这里您无法使用事务,那么您就必须实施补救。