我
PUT 和 POST 都是给服务器发送新增资源,有什么区别?
难度:
PUT 和 POST 方法的区别是,PUT 方法是幂等的:连续调用一次或者多次的效果相同(无副作用),而 POST 方法是非幂等的。
除此之外还有一个区别,通常情况下,PUT 的 URI 指向是具体单一资源,而 POST 可以指向资源集合。
举个例子,我们在开发一个博客系统,当我们要创建一篇文章的时候往往用POST https://www.jianshu.com/articles
,这个请求的语义是,在 articles 的资源集合下创建一篇新的文章,如果我们多次提交这个请求会创建多个文章,这是非幂等的。
而PUT https://www.jianshu.com/articles/820357430
的语义是更新对应文章下的资源(比如修改作者名称等),这个 URI 指向的就是单一资源,而且是幂等的,比如你把『刘德华』修改成『蔡徐坤』,提交多少次都是修改成『蔡徐坤』
ps: 『POST 表示创建资源,PUT 表示更新资源』这种说法是错误的,两个都能创建资源,根本区别就在于幂等性