修改接口,字段的内容允许清空,避免歧义,参数校验:@NotNull

1. 问题描述

修改接口,字段的内容允许清空,是否应该做参数校验?如何做参数校验?

2. 说明

2.1. 需要对字段进行校验。

因为不校验,字段可能不传,或者字段的值为null;这样无法判断出,这个字段对应的含义,是不修改(默认逻辑),还是要修改为空(业务中修改的逻辑)。

当逻辑为修改时,一个字段的值为null,默认的含义是,这个字段没有修改。ORM框架也是按照这个规则设计的,字段为null,不更新字段。

2.2. 校验方法:@NotNull

正确的校验方法是使用 @NotNull,字段必须传且不能为空指针null,否则接口返回调用失败。

3. 字段清空逻辑

字段清空逻辑,对应着字段的值为空字符串

字段中的值不为空,则表示字段值修改为这个值。

这样就不会再产生歧义问题了。

4. 代码示例

4.1. 参数对象

package com.example.web.param;

import javax.validation.constraints.NotNull;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

@Data
@ApiModel("编辑账号Param")
public class AccountEditParam {

	@NotNull(message = "邮箱,不能为null。清空内容,请传空字符串")
	@ApiModelProperty("邮箱")
	private String email;

}

4.2. 接口

	@PostMapping("account")
	@ApiOperation("编辑账号(允许清空字段内容)")
	public void editAccount(@Valid @RequestBody AccountEditParam param) {
		// TODO 操作数据库,修改对应的字段。
	}

5. 结果示例

如果email字段,不传或者为null,接口返回调用失败;
如果email字段,传的是空字符串,接口调用成功,email字段修改为空字符串。

5.1. 不传或者为null

参数:

在这里插入图片描述

在这里插入图片描述

结果:

在这里插入图片描述

5.2. 传的是空字符串

参数:

在这里插入图片描述

结果:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宋冠巡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值