如果我必须在表单提交时创建并修改同一数据库表中的记录,我应该如何设计其余 API



我有反应应用程序,我可以修改已经添加的项目,也可以添加新的项目。然后在提交表单后,我想修改现有的表单并在数据库中创建新记录。我应该在提交表单时对现有 PUT 调用并针对新调用 POST 调用吗?

目前,我正在对服务器进行POST调用并检查收到的对象是否具有主键,然后在数据库中对其进行更新,否则创建新记录。

但我认为我没有遵循休息原则,因为我在同一个休息调用中更新和创建记录。

@Post
createOrModifyObject(List<Object> obj) {
if(obj.getId() != null) {
    database.update();
}else{
    database.create()
}
}

我需要在同一调用中创建和更新记录。我应该如何处理它?我是否应该单独调用创建和更新记录?

从 https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PUT:

HTTP PUT 请求方法创建新资源或将目标资源的表示形式替换为请求有效负载。

从 REST 的角度来看,在这种情况下只使用 1 个 HTTP 方法就可以了,只要它是 PUT

最适合您的解决方案是创建另一种更新资源的方法。为什么?因为:

  1. REST 设计的最佳实践是将资源的创建映射到 POST 方法,并将现有资源的更新映射到 PUT 方法。
  2. 单一
  3. 责任原则也适用于方法,因此不应使用具有创建和更新资源责任的单一方法。应将这些责任拆分为两种方法。
  4. 通过将响应性拆分为多个方法,可以将代码解耦。因此,如果您在当前方法中放置一个错误,您将同时影响实体的创建和实体的更新。

您可以创建 POST 请求:

something:here/goes/user -> 这将创建一个新用户。

和一个 PUT 请求:

something:here/goes/user/info-about-user -> 这将更新用户。

我会在不同的请求中处理。这将使您的代码更简单,并避免在一个请求中使用嵌套if-else-then。

相关内容

  • 没有找到相关文章

最新更新