我正在研究 Jboss Resteasy API 以在 Jboss 服务器上实现 REST 服务。我是这个领域的新手。有人可以在这里帮我吗...
有一个带有自定义注释(VRestAuto)的 Rest Service 方法,如下所示。
@POST
@Produces("text/json")
@Path("/qciimplinv")
@Interceptors(VRestInterceptor.class)
public String getInvSummary(@VRestAuto("EnterpriseId") String enterpriseId,String circuitType){
....
businessMethod(enterpriseId,circuitType);
....
}
@VrestAuto 注释告诉我们 'enterpriseId' 值在用户会话中可用。
用户在 Rest Client 工具中将 circuitType 作为 POST 参数单独传递。理想情况下,应该从 session 中读取 enterpriseid 并使用这两个参数(enterpriseid,circuitType)调用 Rest 服务。
为了实现上述功能,实现了拦截器类(VRestInterceptor),如下所示:
public class VRestInterceptor implemnets PreProcessInterceptor,AcceptedByMethod {
public boolean accept(Class declaring, Method method) {
for (Annotation[] annotations : method.getParameterAnnotations()) {
for (Annotation annotation : annotations) {
if(annotation.annotationType() == VRestAuto.class){
VRestAuto vRestAuto = (VRestAuto) annotation;
return vRestAuto.value().equals("EnterpriseId");
}
}
}
return false;
}
Override
public ServerResponse preProcess(HttpRequest request, ResourceMethod method)
throws Failure, WebApplicationException { ......}
}
我能够在接受方法中验证 VrestAuto 注释。但是在 preProcess 方法中,如何调用带有两个参数(企业 ID、电路类型)的 REST 方法?
如果这些拦截器不适合,是否有其他拦截器最适合此功能?
非常感谢您的帮助。