kotlin使用spring mvc(六)

kotlin使用spring mvc(六)

使用@RestControllerAdvice扩展参数验证

在上一节中我看可以看到参数验证返回的错误信息如下

{
	"timestamp": "2018-10-25T06:44:31.196+0000",
	"status": 400,
	"error": "Bad Request",
	"errors": [{
		"codes": ["NotEmpty.passenger.name", "NotEmpty.name", "NotEmpty.java.lang.String", "NotEmpty"],
		"arguments": [{
			"codes": ["passenger.name", "name"],
			"arguments": null,
			"defaultMessage": "name",
			"code": "name"
		}],
		"defaultMessage": "用户名不能为空",
		"objectName": "passenger",
		"field": "name",
		"rejectedValue": "",
		"bindingFailure": false,
		"code": "NotEmpty"
	}],
	"message": "Validation failed for object='passenger'. Error count: 1",
	"path": "/p/add"
}

事实上我们想要的只是

{"data":null,"succes":false,"msg":"用户名不能为空"}

那么我们就应该捕捉到参数验证异常之后,返回CommonResult对象

@RestControllerAdvice
class GlobalExcpetionHandler{
    //验证参数
    @ExceptionHandler(value = [MethodArgumentNotValidException::class])
    fun validParameters(e:MethodArgumentNotValidException):CommonResult<Any>{
        return CommonResult(null,false,e.bindingResult.allErrors.firstOrNull()?.defaultMessage ?: "")
    }
}

再次post请求过来,发现我们设置的捕捉异常已经生效了

转载于:https://my.oschina.net/weidedong/blog/2252419

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101351.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 使用pycharm中全文搜索快捷键(整个项目搜索)[通俗易懂]

    使用pycharm中全文搜索快捷键(整个项目搜索)[通俗易懂]Ctrl+Shift+F或者在关闭所有的文件后在主页面,连续按两次shift 

    2022年8月28日
  • stm32f103替换_能力复用

    stm32f103替换_能力复用文章来源:刚接触STM32F103,在尝试编写“按键中断”和“PWM呼吸灯”程序的时候,发现例程都用到了管脚复用AFIO://打开管脚复用AFIORCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);写到“232USART串口通信”程序时,当我非常自信的写下上面这句代码后,发现例程里面却没有这句话,很让人摸不着头脑……查了很多资料,加上

    2022年10月10日
  • Android 代码混淆 混淆方案

    Android 代码混淆 混淆方案本篇文章:自己在混淆的时候整理出比较全面的混淆方法,比较实用,自己走过的坑,淌出来的路。请大家不要再走回头路,可能只要我们代码加混淆,一点不对就会导致项目运行崩溃等后果,有许多人发现没有打包运行好好地,打包完成以后而又不不可以了,导致了许多困惑,本片文章来问大家解决困惑,希望对大家有帮助。

    2022年5月29日
  • Spark快速入门系列(三)深入理解RDD

    Spark快速入门系列(三)深入理解RDD这里写目录标题深入RDD二级目录三级目录深入RDD目标深入理解RDD的内在逻辑,以及RDD的内部属性(RDD由什么组成)案例需求给定一个网站的访问记录,俗称Accesslog计算其中出现的独立IP,以及其访问的次数二级目录三级目录…

    2022年7月26日
  • java字符串数组初始化和赋值[通俗易懂]

    java字符串数组初始化和赋值[通俗易懂]//一维数组String[]str=newString[5];//创建一个长度为5的String(字符串)型的一维数组String[]str=newString[]{“”,””,””,””,””};String[]str={“”,””,””,””,””};String数组初始化区别      首先应该明白java数组里面存的是对象的引用,所以必须初

    2022年7月18日
  • Spring Boot 默认数据源 HikariDataSource 与 JdbcTemplate 初遇

    Spring Boot 默认数据源 HikariDataSource 与 JdbcTemplate 初遇目录环境准备新建项目pom.xml默认内容mysql数据库数据库CRUD全局配置文件默认数据源CRUD数据库PhoneController测试结果自动配置原理DataSourceConfiguration1、《SpringBoot数据库访问简介》中已经介绍,SpringBoot可以通过多种方式访问各种数据库,本文将介绍Spr…

    2022年6月23日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号