我有一个使用泽西(Java)开发的RESTful服务,它为用户做繁重的工作,包括单个完整操作的多个文件传输部分。我想向使用此服务的客户端(用户)提供某种类型的进度通知,以指示正在进行的操作或操作的完成百分比。通知的准确性不是问题。考虑到这是一个RESTful服务,有没有想过如何实现这一点?任何现有的样本都可能会有所帮助。
更新/澄清:此通知类似于主操作仍在进行时的进度/状态通知,因为在某些情况下,整个操作可能需要超过5分钟,我希望确保向客户端更新服务端正在发生的事情,以及为什么需要这么长时间才能完成请求。
例如。请求...状态...状态....状态....最终响应。
我假设这不会发生在相同的请求/响应管道上,这可能涉及在客户端和服务之间创建另一个通信管道。
发布于 2015-03-02 20:55:40
当我询问similar question时,系统建议我使用HTTP 202 Accepted进行响应,并提供新创建资源的地址-操作的状态:
HTTP 202 Accepted
Location: /jobs/statuses/<status_id>发布于 2014-12-23 05:44:07
您可以返回一个包含所有信息的json字符串。生成用于监控的信息的方式由您决定。
下面是一个使用json的控制器示例:
@RequestMapping(value = "/getblabla", method = RequestMethod.POST)
public @ResponseBody String getblabla(@RequestParam("json") String json,
HttpServletRequest request) {
// Do something
return resJson;
}然后你可以使用像Gson这样的库,它有两个主要的方法。
下面是如何将json映射到对象:
MyDto obj = gson.fromJson(json, MyDto.class);下面是如何将对象映射到Json:
String json = gson.toJson(obj);https://stackoverflow.com/questions/27610667
复制相似问题