Artifactory的:REST API糟糕的设计

问题描述:

作出PUT请求创建一个新的(本地/远程/虚拟)存储库时,Artifactory的的REST API将返回:Artifactory的:REST API糟糕的设计

  • 状态200当创建成功
  • 状态400与响应内容的关键字already exists如果资源已经存在

然而,执行日当E在用户/组/权限相同的操作,反应在这两种情况下201

  • 资源是否存在,或
  • 刚刚创建

回应内容也相同!

这不是一个糟糕的api设计吗?

REST API之间有区别。

存储库创建被标记为“Create Repository”用于PUT调用,更新存储库通过使用POST完成。

在用户/组/权限的REST API,使用PUT,用于“创建或更换用户”,你可以在JFrog Artifactory Wiki page for REST API看到。

因此,即使用户存在于Artifactory中,您将获得201作为对REST API命令的回复将“替换”现有用户。

+0

是的,但不是不一致吗?客户应该知道安全资源是否已经存在?恕我直言api应该在所有资源CRUD操作中保持一种通用/统一的方法,并且具有一致的映射(例如'201' - >成功创建,'40x' - >已经存在等)。我也认为'400'对应于'Bad Request',用于现有的资源库资源,因为它太泛化(可能因其他原因返回,导致'Bad Request')。 '403'或'409'似乎更合适。 – pkaramol