Spring发送请求时如何将枚举类型路径变量转为小写
Spring发送请求时如何将枚举类型路径变量转为小写
嘿,我太懂你碰到的这个问题了——枚举里存的都是大写值,但请求路径里偏偏要转成小写对吧?刚好之前处理过类似场景,给你几个实用的解决思路:
方法一:自定义路径变量转换器
Spring默认会用枚举的name()或者toString()来生成路径变量,我们可以写个自定义转换器,让它自动把Day枚举转成小写字符串。
先写一个Converter实现类,注册成Spring组件:
import org.springframework.core.convert.converter.Converter; import org.springframework.stereotype.Component; @Component public class DayToLowerCaseConverter implements Converter<Day, String> { @Override public String convert(Day day) { return day.name().toLowerCase(); } }
这样一来,Spring在处理@PathVariable的时候,会自动调用这个转换器,把枚举值转成小写,完全不用修改你原来的FooHttpExchange接口代码,省心得很。
方法二:给枚举重写toString()方法
如果不想额外写转换器,更轻量的方式是直接在Day枚举里重写toString()方法,让它返回小写的枚举名:
public enum Day { MONDAY, TUESDAY; // 记得补全其他周几的枚举值哦 @Override public String toString() { return this.name().toLowerCase(); } }
Spring处理路径变量时会优先调用枚举的toString(),这样生成的路径片段自然就是小写的了,适合简单场景。
额外说明
你代码里用的是Spring Boot 3.x+的@HttpExchange注解,上面两个方法都完全适用,因为底层都是依赖Spring的类型转换机制。测试的时候调用doSomethingWithDayOfWeek(Day.MONDAY),生成的请求路径就是/api/1.1/monday/dosomething,正好符合你的需求。
备注:内容来源于stack exchange,提问作者PatPanda
相关产品推荐
相关产品推荐

