使用 Quarkus 和 Resteasy 从主控制器外部访问路径参数
Access path params from outside the main controller with Quarkus and Resteasy
我正在将 Resteasy 与 Quarkus (io.quarkus.quarkus-resteasy
) 一起使用。
我有一个在控制器上声明了参数的路径。
@RequestScoped
@Path("/v1/domain/{domain}/resource")
public class MyRestController {
@POST
@Consumes(APPLICATION_JSON)
public Response create(Entity entity) {
// here I create a new entity...
}
@GET
@Path("/{id}")
@Produces(MediaType.APPLICATION_JSON)
public Response get(@PathParam("id") String id) {
// get and return the entity...
}
}
我想从此控制器外部检索 domain
路径参数,例如在标有 @Dependent
的提供程序中,或在任何处理传入请求的拦截器中。
@Dependent
public class DomainProvider {
@Produces
@RequestScoped
public Domain domain() {
// retrieve the path param here !
}
}
我没有找到这样做的方法,也没有找到相关文档。
我都试过了:
- 用
@Inject
注入 io.vertx.ext.web.RoutingContext
并访问 routingContext.pathParams()
- 使用
ResteasyProviderFactor
恢复请求上下文数据
在这两种情况下,都没有路径参数:请求路径被解析为一个简单的字符串,包含实际的 URL 客户端用来联系我的网络服务。
编辑:
作为解决方法,在我的 DomainProvider
class 中,我使用 routingContext
检索调用的 URL 和一个正则表达式来解析它并提取域。
没有执行此操作的标准方法。
您需要将参数从 JAX-RS 资源向下传递到任何需要它的代码段
我正在将 Resteasy 与 Quarkus (io.quarkus.quarkus-resteasy
) 一起使用。
我有一个在控制器上声明了参数的路径。
@RequestScoped
@Path("/v1/domain/{domain}/resource")
public class MyRestController {
@POST
@Consumes(APPLICATION_JSON)
public Response create(Entity entity) {
// here I create a new entity...
}
@GET
@Path("/{id}")
@Produces(MediaType.APPLICATION_JSON)
public Response get(@PathParam("id") String id) {
// get and return the entity...
}
}
我想从此控制器外部检索 domain
路径参数,例如在标有 @Dependent
的提供程序中,或在任何处理传入请求的拦截器中。
@Dependent
public class DomainProvider {
@Produces
@RequestScoped
public Domain domain() {
// retrieve the path param here !
}
}
我没有找到这样做的方法,也没有找到相关文档。
我都试过了:
- 用
@Inject
注入io.vertx.ext.web.RoutingContext
并访问routingContext.pathParams()
- 使用
ResteasyProviderFactor
恢复请求上下文数据
在这两种情况下,都没有路径参数:请求路径被解析为一个简单的字符串,包含实际的 URL 客户端用来联系我的网络服务。
编辑:
作为解决方法,在我的 DomainProvider
class 中,我使用 routingContext
检索调用的 URL 和一个正则表达式来解析它并提取域。
没有执行此操作的标准方法。
您需要将参数从 JAX-RS 资源向下传递到任何需要它的代码段