Resteasy 委托路由到另一条路由
Resteasy delegate route to another route
我想知道是否有办法在 RestEasy 中委托给另一条路线。
也就是说,从 RS 中的方法开始:
@Path("/api")
public class Foo {
@POST
@Path("/foo")
public Response foo() {
return RestEasy.delegate("GET", "/api/bar");
}
}
委托将 return 与我向 api/bar
发出 HTTP GET
请求完全相同的响应,也就是说,将通过处理该路由的正确 RS , 理想情况下重新填充所有必要的请求信息 (headers, params, payload).
我不想要 HTTP 重定向,因为我希望它对 api 用户透明。
我从 docs/source 看到您有权访问的 org.jboss.resteasy.spi.HttpRequest 接口具有转发方法。
它需要一个字符串作为您的另一个端点的路径,但它不允许您更改方法类型(post 为 get)。但是话又说回来,您无权访问的 RequestDispatcher 转发方法也没有。您不能修改请求或响应。
参见here:
所以你所能做的就是直接调用你的服务方法,或者使用 HTTP 客户端调用内部的其他 REST 端点 foo然后将其流式传输回客户端。
我想知道是否有办法在 RestEasy 中委托给另一条路线。
也就是说,从 RS 中的方法开始:
@Path("/api")
public class Foo {
@POST
@Path("/foo")
public Response foo() {
return RestEasy.delegate("GET", "/api/bar");
}
}
委托将 return 与我向 api/bar
发出 HTTP GET
请求完全相同的响应,也就是说,将通过处理该路由的正确 RS , 理想情况下重新填充所有必要的请求信息 (headers, params, payload).
我不想要 HTTP 重定向,因为我希望它对 api 用户透明。
我从 docs/source 看到您有权访问的 org.jboss.resteasy.spi.HttpRequest 接口具有转发方法。
它需要一个字符串作为您的另一个端点的路径,但它不允许您更改方法类型(post 为 get)。但是话又说回来,您无权访问的 RequestDispatcher 转发方法也没有。您不能修改请求或响应。
参见here:
所以你所能做的就是直接调用你的服务方法,或者使用 HTTP 客户端调用内部的其他 REST 端点 foo然后将其流式传输回客户端。