在典型的REST体系结构中,客户端以HTTP方法的形式向服务器发送请求,以创建、检索、修改、删除资源。虽然PUT和POST都可以用来创建资源,但是它们在预期的应用程序方面却有着很大的不同。
根据RFC 2616标准,应该使用POST方法来请求服务器接受包含的实体作为由Request-URI标识的现有资源的从属。这意味这POST方法将在资源集合下创建一个子资源。
另一方面,应该使用PUT方法来请求服务器在提供的Request-URL下存储封闭的实体。如果Request-URI指向服务器上的现有资源,这所提供的实体将被视为现有的资源的修改版本。因此,PUT方法将创建或更新现有资源。
这两种方法之间的另外一个重要区别就是,PUT是幂等方法,而POST不是。例如,多次调用PUT方法将创建或者更新相同的资源。相反,多个POST请求将导致多次创建相同的资源。