如何从 400 覆盖 @NotNull HTTP 状态代码
Posted
技术标签:
【中文标题】如何从 400 覆盖 @NotNull HTTP 状态代码【英文标题】:How to override the @NotNull HTTP Status Code from 400 【发布时间】:2022-01-20 03:48:31 【问题描述】:我正在创建一个新的 SpringBoot API,并且我的模型中有一些强制参数。例如
@NotNull(message="Name is Mandatory")
public String Name
如果没有提供名称,它当前会返回状态代码 400 Bad Request 以及定义的消息。有没有办法将状态码从 400 覆盖到 404 Not found?
【问题讨论】:
尝试使用ControllerAdvice处理抛出的异常并返回404响应 我认为你可以让它抛出这样的异常并在你的 @ExceptionHandler 方法在你的 RestControllerAdvice 文件中处理它,当它的消息是你所期望的时候 【参考方案1】:下面是显示自定义消息的几件事:
@NotNull(message = "error.title.notnull")
public String Name
之后我们可以在src/main/resources/messages中创建message.properties
来显示错误信息:
error.title.notnull= Name is Mandatory
之后你需要在main
类中制作MessageSource bean:
@Bean(name = "messageSource")
public ReloadableResourceBundleMessageSource messageSource()
ReloadableResourceBundleMessageSource messageBundle = new ReloadableResourceBundleMessageSource();
messageBundle.setBasename("classpath:messages/message"); // Path of message.properties
messageBundle.setDefaultEncoding("UTF-8");
return messageBundle;
这是来自message.properties
的获取消息。
【讨论】:
以上是关于如何从 400 覆盖 @NotNull HTTP 状态代码的主要内容,如果未能解决你的问题,请参考以下文章
用iframe嵌套的页面会自动跳转覆盖父页面,请问如何解决?