首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spring RestController:在Rest控制器中抛出异常时的HTTP406

Spring RestController是Spring框架中的一个注解,用于标识一个类是Restful风格的控制器。在Rest控制器中抛出异常时的HTTP406是指当Rest控制器处理请求时,如果抛出异常并且没有适合的响应类型,会返回HTTP状态码406 Not Acceptable。

具体来说,当Rest控制器处理请求时,会根据请求的Accept头部信息来确定客户端期望的响应类型。如果抛出异常时,没有找到与客户端期望的响应类型匹配的处理方式,就会返回HTTP状态码406。

HTTP状态码406 Not Acceptable表示服务器无法根据客户端请求的内容特性完成请求。这可能是因为客户端请求的内容类型不被服务器支持,或者服务器无法提供客户端请求的内容特性。

对于处理HTTP状态码406的情况,可以通过以下方式进行处理:

  1. 指定默认的响应类型:可以在Rest控制器的类级别或方法级别上使用@RequestMapping注解指定默认的响应类型。例如,可以使用produces属性指定默认的响应类型为JSON:
代码语言:txt
复制
@RestController
@RequestMapping(produces = MediaType.APPLICATION_JSON_VALUE)
public class MyRestController {
    // RestController的方法...
}
  1. 异常处理:可以在Rest控制器中定义异常处理方法,用于处理抛出的异常。可以使用@ExceptionHandler注解来指定处理的异常类型,并返回适当的响应。例如,对于HTTP状态码406,可以定义一个异常处理方法如下:
代码语言:txt
复制
@RestController
public class MyRestController {
    // RestController的方法...

    @ExceptionHandler(HttpMediaTypeNotAcceptableException.class)
    @ResponseStatus(HttpStatus.NOT_ACCEPTABLE)
    public ErrorResponse handleNotAcceptableException(HttpMediaTypeNotAcceptableException ex) {
        // 构造适当的错误响应
        return new ErrorResponse("406", "Not Acceptable");
    }
}

以上是对于Spring RestController在抛出异常时的HTTP406的解释和处理方式。关于Spring RestController的更多信息,可以参考腾讯云的相关产品和文档:

  • 腾讯云产品:云服务器 CVM(https://cloud.tencent.com/product/cvm)
  • 腾讯云产品:云原生应用引擎 TKE(https://cloud.tencent.com/product/tke)
  • 腾讯云产品:云数据库 MySQL(https://cloud.tencent.com/product/cdb_mysql)
  • 腾讯云产品:云存储 COS(https://cloud.tencent.com/product/cos)
  • 腾讯云产品:人工智能 AI(https://cloud.tencent.com/product/ai)
  • 腾讯云产品:物联网 IoT(https://cloud.tencent.com/product/iot)
  • 腾讯云产品:移动开发 MSDK(https://cloud.tencent.com/product/msdk)
  • 腾讯云产品:区块链 BaaS(https://cloud.tencent.com/product/baas)
  • 腾讯云产品:元宇宙 QCloud XR(https://cloud.tencent.com/product/qcloudxr)

请注意,以上链接仅供参考,具体的产品和文档可能会有更新和变动。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Spring 双层事务,抛出异常消失隐秘角落?

7、PROPAGATION_NESTED 开始执行事务前,先保存一个savepoint,当发生异常,就回滚到savepoint;没有异常,跟着外部事务一起提交或回滚。...具体原因 1、看了上边事务传播机制,继续细化问题,内外层共用一个事务,内层抛出异常,会导致整个事务失败。...2、继续分析,外层逻辑进行了 try catch,就导致内层异常无法继续向上抛出,外层事务会继续提交。...3、事务提交,进行事务状态判断,就发现这个事务是失败,需要回滚,所以抛出了 Transaction silently rolled back because it has been marked...银弹自然是没有的,根据业务场景选择合适方案。 1、当前这种场景,直接把外层逻辑 try catch 去掉即可。

59710

Jmix REST API 两种实现

那么对于 Spring REST API 机制和 Jmix 提供机制,究竟有什么不同,而我们开发又该如何选择呢?...另外,Jmix 服务 API 也支持匿名访问。 Spring 控制器 API 然后我们再看看 Spring RestController 方式。...,抛出请求异常。...注意,这里 URL 与服务 URL 不同,直接使用了控制器定义路径: ▲Postman 调用控制器 API 结论 通过上面的代码,我们可以看到, Jmix 中使用两种类型 REST API...Spring 控制器」: 更加灵活,可以使用 Spring 控制器自定义 HTTP 状态码、响应类型或者异常错误 除了使用服务层实体控制外,还可以控制器层使用自定义 DTO 对返回实体信息做进一步控制

1.3K10

Spring Boot REST API错误处理指南

RestController是用于REST操作类最基本注解。 ExceptionHandler这个Spring注解提供了一种机制,用来处理执行程序期间抛出异常。...此注解将作为处理此控制器抛出异常入口点。总而言之,最常见方法是@ControllerAdvice类方法上使用@ExceptionHandler,以便将异常处理应用于全局或控制器子集。...ControllerAdvice是Spring 3.2引入注解,顾名思义,它是多控制器“建议”。它使得单个ExceptionHandler应用于多个控制器上。...这样我们可以一个地方定义如何处理这样异常,当ControllerAdvice覆盖抛出异常,这个处理程序就会被调用。...现在,我们来看看如何创建一个方法来处理没有Spring BootResponseEntityExceptionHandler声明异常

3.2K20

掌握 Spring异常处理

image-20190518131151510 @ExceptionHandler 接下来我们看下 @ExceptionHandler 用法,这个注解通常定义某个控制器方法里,表明处理该控制器出现指定异常...@ControllerAdvice Spring 3.2 引入了一种新注解 @ControllerAdvice,用于将所有控制器异常处理放在一处进行,将指定一个类作为全局异常处理器,用 @ExceptionHandler...Spring 4.3 版本引入,主要就是便于针对 REST 请求异常直接返回 JSON 格式数据,而不使用 ResponseEntity 对象方式传递数据。...ResponseEntityExceptionHandler 扩展 ResponseEntityExceptionHandler 类是主要针对 Spring MVC 所抛出异常处理类,比如 405 请求...参考 Spring Boot Web 应用统一异常处理 : http://blog.didispace.com/springbootexception Error Handling for REST

1.5K20

微服务声明式rest客户端之feign使用入门教程

本教程,我们将介绍Feign。我们还将谈谈Spring Boot和Feign。 本教程,我们将了解如何使用Feign编写声明性REST客户端。...1.服务设置 我们示例服务是一个简单spring-boot应用程序,包含一个具有两个端点REST控制器: @RestController public class ProductController...spring-boot 1.x版本,feign依赖项来自Netflix但是从spring-boot 2.x开始使用openfeign。...为此,我们需要@Autowired将ProductServiceClient放入我们控制器。...因此,您可能不希望Feign客户端对URL进行硬编码,也希望连接到响应更快服务实例。 我们来设置一个Eureka服务器。同样,我们将使用Spring Initializr来创建它。

1.8K40

Spring Boot处理REST API错误正确姿势

本文中,我们就来介绍我们使用spring boot来构建REST API如何更好更恰当处理错误信息。 ?...SpringBoot 方式错误处理 接下来我们介绍一下将要用于处理异常Spring注解。 RestController RestController是处理REST操作放置类上基础注解。...ExceptionHandler ExceptionHandler是一个Spring注解,它提供了一种机制来处理处理程序执行过程抛出异常(比如Controller操作)。...这样的话,我们就只需要在一个地方定义好如何处理某一个异常,并且当这个ControllerAdvice涵盖抛出异常,这个处理程序就将会被调用。...这表明Spring每次抛出EntityNotFoundExceptionSpring应该调用此方法来处理它。

3.5K130

SSM整合

,可以根据需要自行修改 提供若干个构造方法,方便操作 三、异常处理器 出现异常现象常见位置与常见诱因如下: 框架内部抛出异常:因使用不合规导致 数据层抛出异常:因外部服务器故障导致(例如:服务器访问超时...) 业务层抛出异常:因业务逻辑书写错误导致(例如:遍历业务书写操作,导致索引异常等) 表现层抛出异常:因数据收集、校验等规则导致(例如:不匹配数据类型间导致异常) 工具类抛出异常:因工具类书写不严谨不够健壮导致...(例如:必要释放连接长期未释放等) 所有异常抛出到表现层处理 异常处理 表现层处理异常,每个方法单独书写,代码书写量大且意义不强,一般采用A0P思想处理异常 异常处理器: 集中、统一处理项目中出现异常..."); }; }; 名称:@RestControllerAdvice 类型:类注解 位置:Rest风格开发控制器增强类定义上方 作用:为Rest风格开发控制器类做增强 说明...,功能等同于控制器方法,出现异常后终止原始控制器执行,并转入当前方法执行 说明:此类方法可以根据处理异常不同,制作多个方法分别处理对应异常 四、项目异常处理方案 1.

16330

SpringBootController层常用注解

带占位符URL是Spring 3.0 新增功能,可以通过 @PathVariable 将 URL 占位符绑定到控制器处理方法参数,占位符使用{}括起来。...如果抛出其他异常时候,这个方法就不可以接收到这个异常。 3.1.4.3 就近原则 当异常发生Spring会选择最接近抛出异常处理方法。...当然Spring Boot也可以使用,但是Spring Boot中有它全自动化配置异常处理,因为是全自动化,因此也可以自己定制,比如定制它异常页面,异常信息提示,异常视图。...如果抛出其他异常时候,这个方法就不可以接收到这个异常。 3.1.4.3 就近原则 当异常发生Spring会选择最接近抛出异常处理方法。...当然Spring Boot也可以使用,但是Spring Boot中有它全自动化配置异常处理,因为是全自动化,因此也可以自己定制,比如定制它异常页面,异常信息提示,异常视图。

2.6K00

译:如何使用Spring优雅地处理REST异常

它还允许我们REST API实现统一异常处理机制。 使用自定义解析器之前,让我们回顾一下现有的异常解析器。 3.1....Spring 3.0引入了AnnotationMethodHandlerExceptionResolver,通过注解@ExceptionHandler来处理异常,但是Spring 3.2已经被ExceptionHandlerExceptionResolver...然而,当异常在运行时被抛出异常解析机制将会失败: java.lang.IllegalStateException: No suitable resolver for argument [0] [type...处理Spring Security拒绝访问 当一个经过身份认证用户试图访问他没有足够权限访问资源,就会出现拒绝访问。 5.1....总结 本教程讨论了Spring实现REST API异常处理机制几种方法,从旧机制开始,然后是Spring 3.2,最后是4.x和5.x

1.1K10

SpringBoot:Controller 层常用注解

URL 带占位符 URL 是 Spring 3.0 新增功能,可以通过 @PathVariable 将 URL 占位符绑定到控制器处理方法参数,占位符使用{}括起来。...@Resource 注解使用过程: 当启动 spring 容器时候,spring 容器加载了配置文件 spring 配置文件,只要遇到 bean 配置,就会为该 bean 创建对象 纳入...注解,这个方法就会处理类其他方法(被 @RequestMapping 注解)抛出异常。...如果抛出其他异常时候,这个方法就不可以接收到这个异常。 1.14.3 就近原则 当异常发生Spring 会选择最接近抛出异常处理方法。...当然 Spring Boot 也可以使用,但是 Spring Boot 中有它全自动化配置异常处理,因为是全自动化,因此也可以自己定制,比如定制它异常页面,异常信息提示,异常视图。

31510

Spring知识——注解

Responsebody 注解表示该方法返回结果直接写入 HTTP 响应正文(ResponseBody),一般异步获取数据使用,通常是使用 @RequestMapping 后,返回值通常解析为跳转路径...如果同时指定了name和type,则从Spring上下文中找到唯一匹配bean进行装配,找不到则抛出异常   2....如果指定了name,则从上下文中查找名称(id)匹配bean进行装配,找不到则抛出异常   3....如果指定了type,则从上下文中找到类型匹配唯一bean进行装配,找不到或者找到多个,都会抛出异常   4....如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则则按照类型进行匹配,如果匹配则自动装配; @Controller 定义一个控制器bean @RestController

41800

@ControllerAdvice全局异常处理器没生效?生产报错日志看得眼花缭乱...

因为Exception是所有异常父类,所以当程序抛出异常,添加ExceptionHandler注解方法没有具体异常类型与之相匹配,那都会被下面的方法捕获处理。...原理分析 打断点进行追踪,如果@PostMapping方法抛出异常DispatcherServlet前置控制器doDispatch方法,会进入processDispatchResult,判断入参...总结 当程序抛出一个异常Spring 框架会捕获这个异常,并依次按照如下顺序开始寻找合适@ExceptionHandler方法来处理这个异常。...如果在当前控制器没有找到匹配@ExceptionHandler方法,Spring 会向上搜索控制器父类,看看是否有匹配方法。...当在控制器继承链中都没有找到匹配@ExceptionHandler方法Spring会继续查找@ControllerAdvice注解配置类或HandlerExceptionResolver接口实现全局异常处理器来处理异常

12510
领券