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