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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • qxdm使用教程_log命令

    qxdm使用教程_log命令(一)、首先保证PC机和手机串口(或并口)之间连接畅通,这个可以从QXDM工具的系统栏看出,如果是MSM6000的项目,系统栏会显示“COMX:SURF6000-ZRF6000”;如果是MSM6025的项目,系统栏会显示“COMX:SURF6025-ZRF6025”。其中X为某个串口,比如COM1,X=1等。(二)、QXDM打开后,先配置好messageview要打印的信息,具体的配置如

  • 如何建立爬虫代理ip池「建议收藏」

    如何建立爬虫代理ip池「建议收藏」目录一、为什么需要建立爬虫代理ip池二、如何建立一个爬虫代理ip池原文地址:https://www.cnblogs.com/TurboWay/p/8172246.html一、为什么需要建立爬虫代理ip池在众多的网站防爬措施中,有一种是根据ip的访问频率进行限制的,在某段时间内,当某个ip的访问量达到一定的阀值时,该ip会被拉黑、在一段时…

  • ps如何去水印不留痕迹_水印原理

    ps如何去水印不留痕迹_水印原理概述图像叠加与音频叠加(混音)不同,人耳可以同时听到两种声音,因此混音时需要将两种信号都保留;但视频不同,图像一旦叠加,那么叠加区域人眼就只能看到最上层的图像。本文仅阐述对原始图像数据做修改的叠加方式,不涉及多个plane实现显示级别的图像叠加的知识。因此本文所述的图像叠加基本原理就是:顶层图像的像素直接替换掉底层图像的像素,从而新的图像会显示出叠加效果。NV12格式阐述代码/**a…

  • iframe透明覆盖div_是实现战场透明

    iframe透明覆盖div_是实现战场透明IE5.5和NN6以上的浏览器支持 Frame ,Iframe对象的allowTransparency 方法,如果某对象的背景颜色设置为Transparency的,它将继承包含它容器的特性。我们可以通过这个特性实现透明背景的开/关。代码如下:a.html如下:<HTML><HEAD><TITLE></TITLE><MET…

    2022年10月23日
  • 机器人SLAM算法漫谈

    机器人SLAM算法漫谈本文转载微信公众号 “智能算法”完整的干货,拿来大家分享!http://mp.weixin.qq.com/s/pBpTH0B5AKRGMZ_8rrO4zg1.前言  开始做SLAM(SimultaneousLocalizationandMapping,机器人同时定位与建图)研究已经近一年了。从一年级开始对这个方向产生兴趣,到现在为止,也算是对这个领域有了大致的了

  • mysql 联合索引 唯一_mysql 联合索引和唯一索引

    mysql 联合索引 唯一_mysql 联合索引和唯一索引一般来说.如果有wherea=?andb=?andc=?的语句.如果表也有DML,我一般只在a上建索引.这也是代价平衡的结果.一方面只在a上建索引那么是indexrangescan,不像联合索引那样可以indexuniquescan,我觉得速度差的不多(数据量不大的情况).另一方面,DML也会更新index,更新三个column肯定比更新一个column慢…

发表回复

您的电子邮箱地址不会被公开。

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