PUT 和 POST 都有更改指定 URI 的语义,但 PUT 被定义为 idempotent 的方法,POST 则不是 idempotent 的方法。
PUT 请求:如果两个请求相同,后一个请求会把第一个请求覆盖掉,所以 PUT 用来改资源。
POST 请求:后一个请求不会把第一个请求覆盖掉,所以 POST 用来增资源。
POST 和 PUT 的区别
PUT 请求是向服务器端发送数据的,从而改变信息,该请求就像数据库的 UPDATE 操作一样,用来修改数据的内容,但是不会增加数据的种类等,也就是说无论进行多少次 PUT 操作,其结果并没有不同。
POST 请求同 PUT 请求类似,都是向服务器端发送数据的,但是该请求会改变数据的种类等资源,就像数据库的 INSERT 操作一样,会创建新的内容。几乎目前所有的提交操作都是用 POST 请求的。
就像前面所讲的一样,既然 PUT 和 POST 操作都是向服务器端发送数据的,那么两者有什么区别呢。POST 主要作用在一个集合资源之上的(url),而 PUT 主要作用在一个具体资源之上的(url/xxx),通俗一下讲就是,如 URL 可以在客户端确定,那么可使用 PUT,否则用 POST。
综上所述,可理解为以下:
POST /url 创建
PUT /url/xxx 更新