增删改 - 02 - 前端常见入参
当下常见的前后端分离项目中,前端的数据有时不能很好的传输到后端来,时而让后端功能自测OK,联调时却无法达到预期目标
本着预期内耗自己,不如难受他人的原则,先找前端的问题才是正解
可能双方都有一些问题,如果自测完发现没有问题的话,那就去找前端吧,看看传过来的数据有咩有按照文档来
这里简单总结几个常见的前端传输问题
1. null和字符串null
对于String类型的字段,前端可能会一不小心传入一个
String filed = “null”,而不是后端想要的
String filed = null,
这个小错在DeBug的时候,一不留神就会看错,这个错误的入参比较痛苦
后端要更加自信,自测多次OK的话,大胆怀疑前端吧
解决方案: 让前端修改传参,后端也可以判断是不是"null"字符串,if True 就设为 null 后,再入库
2. 前端传 Long 失真
前端的Long类型和后端的Long类型精度不同,这是因为他们能表示的最大值和最小值不同
前端Long类型:53位二进制 可表示的数值
后端Long类型:64位二进制 可表示的数值
解决方案 1:添加注解
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Long mgmtCompId;
如果有大量的Long类型需要转换,可选择全局配置,而不用单个字段添加注解
全局配置如果使用Jakson,可参考下面的文章
解决方案 2:Long 转为 String
private String mgmtCompId;
3. 前端传来 Date 日期格式
解决方案 1: 添加注解
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone ="GMT+8")
private Date createTime;
解决方案 2: 使用 String
@Pattern(regexp = "^\\d{4}-\\d{2}-\\d{2}$", message = "查询日期格式错误(yyyy-MM-dd)")
private String queryTime;
4. 分页查询时没有刷新 current = 1
解决方案: 放心的去找前端吧,和后端没有关系
5. 传输格式错误
典型案例:后端要求 form 表单类型,前端传了 JSON,这个有时不能怪前端,form 表单对于某些包含复杂集合的DTO,确实是难以处理
举个栗子:
对下面的这个类,里面包含一个 list 集合,前端会觉得这个 list 在 form 表单里难以处理,这时两人商量下怎么处理吧
class DTO {
private Integer count;
private String name;
private List<Integer> subDTO;
}