HTTP PUT插入和标识

时间:2016-08-30 07:38:27

标签: sql-server rest http restful-architecture httpverbs

根据我的理解,PUT可用于插入或修改现有记录。

  

PUT到URL创建/替换完整的资源   客户定义的URL。

PUT: www.domain.com/accounts/1
{
  Name: "Some Name"
}

以下请求会创建ID为1的帐户,但在下一个请求中,它只会更新/替换ID为1的帐户,这使其具有幂等性。

这如何与关系数据库中的标识列或支持自动生成标识的任何其他数据库一起使用?

如果我的帐户有自动生成的SQL标识列,我是否应该使用主键以外的属性来标识数据库中的资源,或者在请求非现有资源时返回资源未找到错误是完全正确的?

1 个答案:

答案 0 :(得分:1)

首先,我会使用POST而不是PUT来创建新资源。

其次,使用DB PK作为资源唯一标识符很好,尽管在某些情况下您可能希望使用guid支持该列(例如,如果您实施的凭证系统并且不希望用户使用尝试通过增加凭证ID来破解它 - 您只需要公开凭证guid)。

至于实际的id,我认为你可以从最初的POST有效载荷中省略它 - 它只是一个实现细节,DB是唯一应该生成它的,它将被返回该(和进一步)请求的响应。