RESTAPI HTTP方法

RESTAPI HTTP方法,rest,http,Rest,Http,我们计划对所有检索使用GET,对所有删除操作使用DELETE。 httpput、POST和PATCH令人困惑。经过大量的阅读,这是我的理解。如果我错了,请改正 POST-非幂等元;因此可用于创建新资源/下级资源。每次创建一个新的ID时,ID都会更改,因此它最适合 PUT-幂等元;无法用于创建,因为同一请求第二次出现时,它会再次创建具有不同ID的新资源。 可用于更新,但每次更新时都应传递所有属性。要实现这一点,应在更新操作之前执行GET。头顶 为什么不使用POST进行更新呢 补丁-不确定它是否适合

我们计划对所有检索使用
GET
,对所有删除操作使用
DELETE
httpput
POST
PATCH
令人困惑。经过大量的阅读,这是我的理解。如果我错了,请改正

POST
-非幂等元;因此可用于创建新资源/下级资源。每次创建一个新的ID时,ID都会更改,因此它最适合

PUT
-幂等元;无法用于创建,因为同一请求第二次出现时,它会再次创建具有不同ID的新资源。 可用于更新,但每次更新时都应传递所有属性。要实现这一点,应在更新操作之前执行
GET
。头顶

为什么不使用
POST
进行更新呢

补丁
-不确定它是否适合JAX-RS 1.1


提前谢谢

我想你的问题是:

为什么不使用POST进行更新呢

POST
PUT
对资源进行不同类型的更改的好处是允许请求的额外向量修改操作,而无需添加更多URL。这样,URL就可以保持简短、干净,并反映它所代表的内容

然而,为了清理问题,补丁通常用于部分更新。因此,像
PUT
一样,它是幂等的,但只会修改您在请求正文中发送的部分资源,而
PUT
则会修改整个内容。这在REST中经常被忽略。你可以读更多


除此之外,据我所知,你的理解很好。好好休息吧

PUT
可用于创建。使用
PUT
可以提供ID(又称URI)。因此,另一次发送相同的请求不会创建另一个资源,而是会更新它(使用相同的内容)。这就是为什么它是幂等的。这里的问题是什么?的潜在副本