REST-保存相关实体

时间:2019-07-11 14:37:01

标签: rest

我正在开发一个应用程序,其中用户在注册时会添加拥有的本地人。用户完成注册过程后,我想在数据库中创建具有相关本地设置的新用户。

为此目的设计API的最佳实践是什么。该问题的命名策略应该是什么?

我现在正在做的是:

@PostMapping(“ /所有者注册/用户)

我要获取全部数据:用户,本地人。我先在模块用户中按UserFacade创建用户,然后在模块本地变量中使用LocalFacade创建相关本地变量

1 个答案:

答案 0 :(得分:0)

根据我的理解,我会设计

@PostMapping("/users")

@PostMapping("/locals")

创建实体的位置。

如果两个创建都成功,则可以像这样更新user

@PutMapping("/users/related-locals")

当然你也可以做

@PutMapping("/locals/related-users")

如果您需要在单个操作中创建user(直接附加related-locals),则需要

  • 首先创建local
  • 获取新创建的id的{​​{1}}或link
  • 在客户端中创建local并将user下的idlink添加到客户端,并related-locals

这意味着,如果POST的创建由于某种原因而失败,您最终将在数据库中悬挂user

另一种可能性是使用 Multipart 。使用Multipart,您可以在同一RequestBody中拥有两个不同的对象。

locals

然后可以接受这样的多部分请求,其中包含@PostMapping("/users") user。然后,您的服务器端实现将必须假设这些locals映射到locals中的related-locals并在服务器端创建它们并将其添加到user中(由{ {1}}或user之前)。如果任何操作失败,则可以回滚整个请求并保持数据库干净。