You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 16:44:33