项目中controller分两种
a.后台管理接口,eg:(/aa/bb)
b.app接口,eg:(/aa/api/bb)
如果根据不用的url,处理不同的404,500
如果是a情况,404返回的是一个错误页面
如果是b情况,404返回的是一个json
目前的处理方式是:
@Override public void configConstant(Constants constants) { constants.setRenderFactory(new ExceptionRenderFactory()); } public class ExceptionRenderFactory extends RenderFactory { @Override public Render getErrorRender(int errorCode) { LogKit.error(StrUtil.format("错误码处理【errorCode:{}】", errorCode)); if (errorCode == 500) { return new JsonRender("{\"msg\":\"500【服务器内部未知错误,请联系平台】\",\"state\":\"fail\"}"); } else if (errorCode == 404) { return new JsonRender("{\"msg\":\"404【请求资源不存在】\",\"state\":\"fail\"}"); } return super.getErrorRender(errorCode); } @Override public Render getErrorRender(int errorCode, String view) { LogKit.error(StrUtil.format("错误码处理【errorCode:{},view:{}】", errorCode, view)); //TODO 再次进行处理了,更具view前缀,判断是否属于后端API,如果是API返回JSON return super.getErrorRender(errorCode, view); } }
此方案导致所有的都会返回json字符串
request.getRequestURI();
即可获取到当前请求的 url,然后通过一个 if 判断,决定是返回 json 还是返回页面即可
记得搞定后回来分享