代码之家  ›  专栏  ›  技术社区  ›  zhuguowei

为什么500错误返回json消息值为空

  •  0
  • zhuguowei  · 技术社区  · 4 年前

    Spring boot应用程序有一个如下方法

    getBasicInfoList(@RequestParam int pageNum, @RequestParam @Max(20)int pageSize)
    

    pageSize不能超过20,如果超过20,则返回以下值

    {
      "timestamp": 1602562522208,
      "status": 500,
      "error": "Internal Server Error",
      "message": "",
      "path": "/convertibleBond/basicInfos"
    }
    

    应用程序抛出以下异常

    javax.validation.ConstraintViolationException: getBasicInfoList.pageSize: must be less than or equal to 20
        at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:117) ~[spring-context-5.2.6.RELEASE.jar:5.2.6.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.6.RELEASE.jar:5.2.6.RELEASE]
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749) ~[spring-aop-5.2.6.RELEASE.jar:5.2.6.RELEASE]
    

    那么为什么 message 值为空?如何让它成为现实 getBasicInfoList.pageSize: must be less than or equal to 20 ?

    1 回复  |  直到 4 年前
        1
  •  2
  •   paulsm4    4 年前

    HTTP 500意味着 在服务器日志中查找错误 !

    幸运的是,你做到了:

    javax.validation.ConstraintViolationException: getBasicInfoList.pageSize: must be less than or equal to 20
        at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:117) ~[spring-context-5.2.6.RELEASE.jar:5.2.6.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.6.RELEASE.jar:5.2.6.RELEASE]
    

    这就是问题所在。你需要修复它。

    Q: 为什么(JSON)消息值为空?

    A: 因为服务器端应用程序在有机会编写Json回复之前就崩溃了。就这么简单。

    修复Spring Boot(服务器端)约束错误,您将再次收到HTTP(Json)消息响应。

    附言

    您还可以考虑在Spring Boot应用程序中添加异常处理。例如: REST API Error Handling With Spring Boot