【发布时间】:2012-12-13 19:37:45
【问题描述】:
在研究用于异步操作的 RESTful API 时,我遇到了以下设计模式:
POST uri:longOperation 返回:
- HTTP 202
- 位置:uri:pendingOperation
GET uri:pendingOperation 返回:
- 如果操作正在运行
- 返回进度报告。
- 如果操作完成
- HTTP 303
- 位置:uri:operationResponse
GET uri:operationResponse
- 异步操作的响应
我发现最后一步有问题。考虑一下如果异步操作完成时出现对HTTP GET 没有意义的错误代码(例如HTTP 409 ("Conflict"))会发生什么。
-
HTTP 303是否需要指向与 uri:pendingOperation 而不是 uri:operationResponse 相关的响应? - 以这种方式使用
HTTP 303是否有害?如果不是,为什么? - 这是我们能做的最好的,还是有更好的方法?
【问题讨论】: