在RESTful SOA中,假设我通过AJAX发出POST请求,但在请求超时之前我没有收到响应。进一步假设重新提交请求会有害。 POST不是幂等的。例如,也许我正在发布银行转账。如果我没有得到回应,我不知道服务器是否处理了请求。如何处理超时POST请求
假设我可以控制客户端和服务端,最佳做法是什么?
我最初的想法是为包括随机数(即,伪ID;某种唯一标识符),每个POST请求;例如也许是If-None-Match标题中的一个值。通过这种方法,客户端可以通过编程方式重新发出具有相同伪ID的超时请求,并且服务器可以拒绝它,如果它包含重复值。
如果您在某个超时后未收到响应,只是假设失败并要求客户端重试或中止。无论如何,服务器上的代码显然应该检查相同的ID。 – alfred
要明确这一点,这个伪ID不是要*资源ID - 我不是直接寻址资源。我按照预期使用POST;即发布到资源处理程序(例如/传输,而不是/传输/)。否则,我不会在第一时间做一个POST。 –
johnr
这与“[避免使用REST重复发布](http://stackoverflow.com/q/15159274/1347968)”类似。 – siegi