swagger 参数驼峰失效问题,Lombok

12 篇文章 2 订阅
10 篇文章 0 订阅

前言

又是个网上搜索无果的问题,使用swagger生成的参数驼峰失效 先看问题

java类


import lombok.Data;

import java.util.List;

/**
 * @Author ZhangLe
 * @Date 2020/11/24 15:30
 */
@Data
public class RequestCarManagerVo {

    private String wId;
    private Boolean isCarManager=false;
    private List<String> dId;
 
}

swagger生成

{
  "did": [
    "string"
  ],
  "isCarManager": true,
  "wid": "string"
}

在这里插入图片描述

问题

对比上述java和swagger生成的对象,我们发现有几个字段自变了,wIddId 驼峰的命名均变成了小写,长字符串的名称为改变,传递参数还必须按照小写的传,不然后台接收不到。这是为什么?

原因

经过一番排查,比如迭代jar,换参数等操作,原因锁在了lombok
有的人会说,这玩意多好用啊,一个注解直接生成了所有需要的方法,我们先对比一下他两生成的getset方法

lombok

        String getwId = requestCarManagerVo.getWId();
        List<String> arr = requestCarManagerVo.getDId();

java

        String getwId = requestCarManagerVo.getwId();
        List<String> arr = requestCarManagerVo.getdId();
    public String getwId() {
        return wId;
    }

    public void setwId(String wId) {
        this.wId = wId;
    }

可有明显看到,原生java生成的getset方法,从命名上直接按照变量的大小写命名,而lombok选择将第一个字符大写,,也就是说因为getset方法的不同,导致生成的参数不同,为了验证我类中重写了object的方法重新生成swagger

{
  "dId": [
    "string"
  ],
  "isCarManager": true,
  "wId": "string"
}

果然问题得到了解决,建议大家阅读一下推荐的文章,发现这个问题也是忽然想起了几周前读过的这篇文章,这个文章详细说明了lombok所带的几个问题

推荐

给大家推荐看一篇文章,这边文章从其他几个方面阐释了问啥不用lombok
为什么有些公司不让用 Lombok ?

总结

个人认为可能是国内外开发团队命名习惯不同,参数改为全小写,这种两者生成的文档都一样,也不关乎swagger的事,如果你使用了这种参数形式,那必须重写原生java的getset,有时候图省事,或者代码优雅,为此会给自己挖个坑。

更新2022.03.16

昨天遇到一个问题,参数为无驼峰,相应为有驼峰,swagger为全小写

java

    private Double MSRP;

    public Double getMSRP() {
        return MSRP;
    }

    public void setMSRP(Double MSRP) {
        this.MSRP = MSRP;
    }

前端显示为mSRP
在这里插入图片描述
swagger显示为msrp

原因

Java 属性无驼峰时会映射为首字母小写其余大写情况

修改

遵循阿里规范,命名全小写或者驼峰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值