Java Access Rest方法按ContainerRequestFilter中的路径进行操作

时间:2018-10-25 09:10:51

标签: java rest jax-rs interceptor

尝试验证是否确实存在调用的rest方法以及该方法的访问参数。如果有任何例外,我想抛出我的自定义例外。 对于例外情况,我已经使用WriterInterceptor实现了逻辑,就像这样:

@Provider
public class AppWriterInterceptor implements WriterInterceptor {

@Override
    public void checkContext(WriterInterceptorContext context) throws IOException, WebApplicationException {

        Object entity = context.getEntity();
if (entity instanceof Throwable) {

            Throwable t = (Throwable) entity;


            Map<String, Object> ret = new HashMap<>();

            ret.put("message", t.getMessage());

            if (t instanceof MyCustomException) {
                ret.put("messageCode", ((MyCustomException) t).getMessageCode());
            } else {
                ret.put("messageCode", "unexpected.error");
            }
            context.setEntity(ret);
        }

        context.proceed();

    }

但是当使用错误路径调用我的应用程序时,例如:base_url / get-client插入了get-clinets,它不会进入WriterInterceptor。

我的其他一些休息方法也具有枚举类型的参数,在调用方法之前需要检查被枚举变量是否确实存在于枚举中,因为我需要访问方法及其参数。 ContainerRequestFilter怎么可能。

0 个答案:

没有答案