当我在带有CustomAnnotation
注释的函数周围引发异常时,我得到的响应看起来像这样:
{
"timestamp": "Jan 16, 2019 5:33:08 PM",
"status": 401,
"error": "Unauthorized",
"message": "Unauthorized",
"path": "/path"
}
但是当我在@annotation(org.springframework.web.bind.annotation.RequestMapping)
周围执行此操作时,我收到的状态为401
,但没有响应正文。为什么缺少响应主体,我该如何解决?
这是代码的样子:
@Component
@Aspect
public class AnnotationProcessor {
@Around("@annotation(org.springframework.web.bind.annotation.RequestMapping)")
// @Around("@annotation(path.to.my.CustomAnnotation)")
public Object proceed(ProceedingJoinPoint call) throws Throwable {
throw new ResponseStatusException(HttpStatus.UNAUTHORIZED, "Unauthorized");
}
}
我的目标是基于为控制器方法指定的注释来验证传入的请求。
如果有人可以提出解决方案/更好的方法来实现相同目标,那就太好了。
答案 0 :(得分:0)
我建议使用ResponseEntity而不是抛出状态异常
public ResponseEntity<Void> proceed(ProceedingJoinPoint call){
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build();
}
您也可以在该ResponseEntity对象上处理其他HttpStatus。