我需要创建一个 RESTful 服务,它应该支持以下方式的异步调用。当用户调用某种方法时,他得到了 http '202' 代码和 url 来轮询他可以在哪里看到他的请求状态。目前我使用 JAX-RS 及其注释:
@Path("")
public interface MyService {
@POST
@Path("/myService/{name}")
@Consumes({APPLICATION_XML, APPLICATION_JSON})
void postSomething(@PathParam("name") String name, MyObject data);
}
这样的映射将通过服务于 POST 请求的 url/myService/{name} 公开 MyService 的 postSomething() 方法,从 url 获取“name”参数,从请求正文获取“data”。
我希望在发出此 PUT 请求后客户端获得 202 http 代码和一些回调 url 以轮询以在执行方法后获得结果。
所以问题是: 1.如何让JAX-RS返回202码? 2.如何将回调url传递给客户端?
最佳答案
让 postSomething 方法返回一个 Response 对象:
public Response postSomething(@PathParam("name") String name, MyObject data) {
return Response.status(Status.ACCEPTED).build();
}
如果您希望回调 URI 在 HTTP 正文中作为纯文本,您可以这样做:
public Response postSomething(@PathParam("name") String name, MyObject data) {
return Response.status(Status.ACCEPTED).entity("http://google.com").build();
}
要按资源类生成 URI,请查看 UriBuilder
关于rest - 使用 JAX-RS 的异步 REST 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6440432/