rest - 使用 JAX-RS 的异步 REST 调用

标签 rest asynchronous jax-rs

我需要创建一个 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/

相关文章:

Java JAX-RS 对任何端点调用使用react

c# - RestSharp JSON 参数发布

api - 无法理解一些基本的 REST 内容

http - 根据我们域中定义的规则,Http 状态代码 412 是否适合错误

asynchronous - 在 Flutter 中更新下拉数据会报错

java - 如何在 RESTEasy 3.0 客户端框架(使用 ResteasyClientBuilder 和 ResteasyWebTarget)中设置 HTTP header ?

java - RESTful Web 服务返回类型

java - 设置 restAssured 以记录全局的所有请求和响应

c# - 任务的执行在 C# 中使用 Task.WaitAll 挂起

c++ - 异步 COM C++ 调用