当前位置: 首页 > 面试题库 >

截取@RequestHeader异常以获取缺少的标头

罗伟兆
2023-03-14
问题内容

我在控制器中有一个具有参数的方法,例如

@RequestMapping(value = "/{blabla}", method = RequestMethod.POST)
@ResponseStatus(HttpStatus.CREATED)
public void post(@RequestHeader("ETag") int etag)

如果请求中没有ETag标头,则客户端获取400(BAD_REQUEST),这没有任何意义。我需要以某种方式处理此异常并将自己的异常发送给客户端(为此,我使用JSON)。我知道我可以通过@ExceptionHandler拦截异常,但是在那种情况下,所有HTTP
400请求都将得到处理,但是我希望标头中缺少ETag。有任何想法吗?


问题答案:

您应该使用@ExceptionHandler方法,该方法查看是否存在ETag标头并采取适当的措施:

@ExceptionHandler(UnsatisfiedServletRequestParameterException.class)
public onErr400(@RequestHeader(value="ETag", required=false) String ETag,
        UnsatisfiedServletRequestParameterException ex) {
    if(ETag == null) {
        // Ok the problem was ETag Header : give your informational message
    } else {
        // It is another error 400  : simply say request is incorrect or use ex
    }
}


 类似资料:
  • 对于和的未处理插件异常,我收到一个错误: 未处理的异常:MissingPluginException(在channel plugins.flatter.io/shared_首选项上找不到方法getAll的实现)未处理的异常:MissingPluginException(在channel plugins.flatter.io/path_provider上找不到方法getApplicationSupp

  • 在Spring Boot时发出请求并得到一个丢失的参数异常,尽管该值没有丢失。解决数独的项目 请求url为:http://localhost:8080/solvesudoku/getcellanswer/0/0 下面是错误消息: “错误”:“错误请求”, “异常”:“org.springframework.web.bind.MissingServletRequestParameterExcepti

  • 问题内容: 我在应用程序上加载一堆图像时遇到错误,我不确定是什么原因引起的。 这是他得到的错误。线135在底部。 我认为他的手机内存不足。他使用的是2010年生产的Desire HD。此方法的作用是从服务器获取图像并将其保存在哈希图中。以及将其显示在屏幕上。关于如何防止OUTMEMORYERROR的任何想法? 我当时正在考虑建立一个计数器,如果有超过20张图像,该计数器只会清除哈希图。 Logca

  • 问题内容: 我正在执行spring的简单Dependency Injection程序并获取此异常。我已经包含了common-logging1.1.1.jar和spring.jar文件。你能帮忙吗? 问题答案: 如果你正在使用maven来管理依赖项,请在中添加以下行:

  • 我是groovy的新手。我有这样的代码。 串味 从这个客户端映射中,我需要迭代appName和enable的值。为此,我使用了get方法。。。我对此不确定。 使用此get方法时,我遇到以下错误。因为我是groovy新手,所以我不知道这里发生了什么 棒极了。lang.MissingMethodException:没有方法com的签名。康卡斯特。csv。哈克索。SecureFirebaseRestCl

  • 线程“main”java.lang.IllegalArgumentException:“FilterFn”必须在com.hazelcast.jet.impl.util.checkSerializable(util.java:301)在com.hazelcast.jet.impl.pipeline.computeStageImpbase.attachFilter(computeStageImplos

  • 我尝试让 SHA1 用于火基地,但我无法获得 SHA1 在JavaVirtualMachines我使用jdk1.8.0_202.jdk 我试着进入梯度- = keytools-exportcert-alias androiddedegkey-keystore~/. android/debug.keystore-list-v keytool-list-v-keystore/Users/bobhope

  • 问题内容: 你们中有谁知道针对测试失败和异常进行屏幕截图的可能解决方案? 我在其中添加了以下代码,但结果是它也会对通过的测试进行截图,因此它不是最佳解决方案: 我已经找到了这个主意:http: //yizeng.me/2014/02/08/take-a-screenshot-on-exception-with- selenium-csharp-eventfiringwebdriver/ ,可以使用