在中间件api中结合GET和POST方法的最佳方法是什么?

时间:2018-11-25 06:40:34

标签: node.js rest api http

我必须创建一个中间件API,该功能可以检查数据库中是否存在密钥。如果密钥存在,则应该简单地获取它(GET方法)。如果不是,则API应该在数据库中创建密钥及其值,然后返回该密钥(POST方法)。因此,由于此API中有2种根本不同的方法组合在一起,这样做正确吗?设计此类API的最佳方法应该是什么?

3 个答案:

答案 0 :(得分:2)

不要将它们组合在一起。

如果您的记录不存在,则从GET方法返回零结果。然后,在客户端中,如果收到零结果,则将所需信息POST发送到另一个API端点。

将这两个想法结合在一起将创建一个难以理解的系统。您的系统应该是确定性的,即您始终可以在每次调用之前知道每次调用的结果。

答案 1 :(得分:1)

查看API的一种方法是忘记基础数据库,但考虑一下API客户端如何使用它。

如果API客户端执行GET请求,则会发生两件事:

  1. 返回现有记录
  2. 创建新记录并返回

客户端可能实际上并不关心是否发生1或2。从客户的角度来看,资源似乎总是存在的(即使只是从技术上来说就是创建的)。

只要没有必须与POST请求一起发送的额外信息,在两种情况下都可以使用GET请求。

答案 2 :(得分:0)

我不知道您的情况,通常最好将您的获取和发布分开。但是,如果您的客户认为需要创建一条记录然后发布数据,则我看不到返回资源和该资源已存在的409的问题。这是一个类似的问题HTTP response code for POST when resource already exists

然后,客户端可以根据您的需要不同地处理409或与处理200相同。