2017-08-03 75 views
0

我知道PUT是幂等的,但我怎样才能以编程方式确保它?我必须满足哪些条件来创建完全幂等端点?如何创建幂等端点

+0

你真的是指_idempotent_还是你的意思是_safe_(无副作用)?幂等仅仅意味着如果您在资源上调用_PUT_,则会得到相同的结果。您只需用新内容替换资源的内容,则结果应始终为(例如)HTTP状态码200(只要资源存在)。 – andih

回答

1

从RESTful服务的角度来看,对于一个操作(或服务调用) 为幂等,客户端可以使相同呼叫反复而产生 相同的结果。换句话说,制作多个相同的 请求与制作单个请求具有相同的效果。注意 虽然幂等操作在服务器上产生相同的结果(没有 副作用),但响应本身可能并不相同(例如, 资源的状态可能在请求之间改变)。

A PUT应该用请求主体中收到的新值更新资源。因此,无论是发送一次还是多次,服务器上的结果都不应该改变(例如,不同于POST,例如,更多请求会导致冲突错误或创建多个资源)。

+0

您必须注意_idempotent_和_safe_之间的区别。 _Idempotent_表示您可以根据需要经常调用相同的方法,您将得到相同的结果,但这并不意味着资源不会被修改。最好的例子是_delete_方法/ http动词。 _POST_和_PATHCH_既不是_idempotent_也不是_safe_,而_PUT_和_DELETE_是_idempotent_,但* not * _safe_。 – andih