HTTP动词PUT不是用于更新而不是创建内容吗?

nev*_*ame 19 rest couchdb http

在CouchDB中,要创建您发送的新文档:

PUT /albums/70b50bfa0a4b3aed1f8aff9e92dc16a0
Run Code Online (Sandbox Code Playgroud)

是不是PUT用于更新数据而不是创建数据?

Vic*_*let 18

它用于两者.RFC:

PUT方法请求将所包含的实体存储在提供的Request-URI下.如果Request-URI引用已经存在的资源,则封闭的实体应该被视为驻留在源服务器上的实体的修改版本.如果Request-URI未指向现有资源,并且该URI能够被请求用户代理定义为新资源,则源服务器可以使用该URI创建资源.


man*_*ana 16

对我来说PUT的关键术语总是幂等的.对于POST而言,你总是在系统状态中"添加另一个"项目,PUT即使多次执行动作也是相同的(因为你正在处理一个项目).

例:

做100次POST /专辑=你最终会得到100张不同的专辑(但内容相同)

做100次PUT /专辑/ 123 =你最终会得到一张id为123的专辑(含内容)