我正在使用Spring框架在Java上开发RESTful服务。如果我的服务层发生异常,我会抛出绑定到Http状态代码的异常。例如,当用户的身份验证失败时,我发送带有401状态代码的响应。
return new ResponseEntity<>(HttpStatus.valueOf(statusCode));
我想向RESTful服务消费者解释他的请求有什么问题,不仅发送代码而且发送文本说明。我可以通过向响应正文添加自定义消息或替换默认响应短语来实现此目的。例如,使用Unauthorized
或401
替换User does not exist
的{{1}}。
问题是来自Incorrect password
的{{1}}是枚举,错误代码绑定到文字回复短语。
我可以以某种方式覆盖这些回复短语,或者我需要另一种方法吗?
替换默认响应短语是一种好习惯,还是将解释信息放到响应主体中会更好?
答案 0 :(得分:0)
这应该有效:
首先,您可以通过添加将请求方法绑定到它生成的类型
produces = {MediaType.TEXT_PLAIN}
到您的@RequestMapping
,其中MediaType来自导入javax.ws.rs.core.MediaType
,这将生成文本明确的回复。
然后您可以返回以下内容:
return new ResponseEntity<>(message, HttpStatus.UNAUTHORIZED);
其中message是您要显示的短信。