AOP应用:驼峰下划线互转

1. 概念

驼峰式参数:{"peopleName": "张三"}

下划线式参数:{"people_name": "张三"}

2. 背景介绍

后端是java服务,使用springboot框架。

原本前后端sonar的规范都要求接口参数是驼峰形式,两端可以直接无压力对接。

但是我们所有的接口都是统一记录到一个接口平台的,这个平台要求使用下划线的格式,不按照规范的话会影响绩效。

所以只能按照下面的方式设计接口

3. 后端实现

假设后端接口入参是:people_name="张三",出参是{"people_name":"张三","people_sex":"男"}

我们实际项目中用了3.2.2介绍的方式将入参转驼峰;使用了3.3介绍的方式将出参转下划线。

3.1. 指定每一个参数具体的参数值

3.1.1. @ReuqestParam指定入参是下划线

接收入参时,接口指定了入参为下划线,下面代码关键是“@ReuqestParam”所以没什么好讲的。

@RestController

public class PeopleController {

     

    @GetMapping("/people/query")

    public Result<People> queryPeople(@RequestParam("people_name") String peopleName) {

        People thePeople = findPeople(peopleName);

        return Result.success(thePeople);

    }

     

}

 

3.1.2. @JsonProperty指定出入参是下划线

如果参数是对象形式的,可以使用这个

public class PeopleQueryParam {

    @JsonProperty("people_name")

    private String peopleName;

}

这个指定每一个参数具体值的方式不太好,因为你需要给每一个参数数据都加上注解。

3.2.  自定义组件实现驼峰下划线互转

具体做法是自定义了一个组件,组件中实现驼峰转下划线的功能

3.2.1. 组件自动配置ReqRespAutoConfiguration

自动配置FilterRegistrationBean<RequestParamFilter>实例,功能是请求入参转驼峰

自动配置ResponseCamelcaseToUnderlineAdvice实例,功能是响应出参转下划线

package com.myhexin.vtuber.reqresp.config;

import com.myhexin.vtuber.reqresp.filter.RequestParamFilter;

import com.myhexin.vtuber.reqresp.globalhandler.GlobalExceptionAdvice;

import com.myhexin.vtuber.reqresp.globalhandler.I18nResponseAdvice;

import com.myhexin.vtuber.reqresp.globalhandler.ResponseCamelcaseToUnderlineAdvice;

import com.myhexin.vtuber.reqresp.i18n.I18nResolveHelper;

import com.myhexin.vtuber.reqresp.i18n.VtuberI18nMessag

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值