java–Spring Boot– 用于处理JSON或HTML的错误控制器

java–Spring Boot– 用于处理JSON或HTML的错误控制器,第1张

概述我有一个春季启动应用程序.我有一个自定义错误控制器,映射到使用ErrorPage映射.映射主要基于HTTP状态代码,通常只是适当地呈现HTML视图.例如,我的映射:@Configuration class ErrorConfiguration implements EmbeddedServletContainerCustomizer { @Overri

我有一个春季启动应用程序.

我有一个自定义错误控制器,映射到使用ErrorPage映射.映射主要基于http状态代码,通常只是适当地呈现HTML视图.

例如,我的映射:

@Configurationclass ErrorConfiguration implements EmbeddedServletContainerCustomizer {  @OverrIDe public voID customize( ConfigurableEmbeddedServletContainer container ) {      container.addErrorPages( new ErrorPage( httpStatus.NOT_FOUND,"/error/404.HTML" ) )  }

我的错误控制器:

@Controller@RequestMapPingpublic class ErrorController {    @RequestMapPing( value = "/error/404.HTML" )    @ResponseStatus(value = httpStatus.NOT_FOUND)    public String pageNotFound( httpServletRequest request ) {        "errors/404"    }

这很好 – 如果我只输入一个随机不存在的URL,那么它将呈现404页面.

现在,我想要一个我的网站的一部分,让我们说/ API / ..专用于我的JsON API将错误作为JsON提供,所以如果我在/ API / ..下输入一个随机不存在的URL,那么它返回404 JsON响应.

有没有标准/最好的方法来做到这一点?我试过的一个想法就是有一个@ControllerAdvice专门捕获了我定义的一类自定义API异常并返回了JsON,并且在我的标准ErrorController中检查URL并在该API URL空间下抛出apprpriate API异常(但是不起作用,因为无法调用ExceptionHandler方法,因为它是与原始控制器方法不同的返回类型).

这件事已经解决了吗?

最佳答案问题是我自己的错.我试图弄清楚为什么我的@ExceptionHandler无法捕获我的异常并返回JsON – 正如我在问题的最后建议的那样,我认为由于返回类型冲突我遇到了问题 – 这是不正确的.

我试图让我的异常处理程序返回JsON的错误是:

  "exception": "org.springframework.web.httpMediaTypeNotAcceptableException","message": "Could not find acceptable representation"

我做了一些挖掘/试验以试图缩小问题范围(认为问题是因为我在Spring错误处理流程和导致问题的ErrorController中),但问题只是因为内容协商东西春天呢.

因为我在web.xml中的errorPage映射映射到/error/404.HTML,所以Spring使用后缀来解析相应的视图 – 所以当我尝试返回Json时它会失败.

我已经能够通过将我的web.xml更改为/ error / 404或关闭内容协商后缀选项来解决此问题.

总结

以上是内存溢出为你收集整理的java – Spring Boot – 用于处理JSON或HTML的错误控制器全部内容,希望文章能够帮你解决java – Spring Boot – 用于处理JSON或HTML的错误控制器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1250948.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存