我想发送具有小写值的 http 请求,其中在路径变量中,该值取自具有大写值的枚举。
非常简单的代码:
@HttpExchange(accept = "application/json")
public interface FooHttpExchange {
@GetExchange("/api/1.1/{day}/dosomething")
String doSomethingWithDayOfWeek(@PathVariable("day") Day day);
使用枚举:
public enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
如您所见,枚举的所有值都是大写的,以遵守 Java 枚举的约定。
但我也确实从第三方库中获取了枚举。我无法更改枚举的内容。
我希望将其作为请求发送(以星期一为例):
http://example.com/api/1.1/monday/dosomething
不幸的是,它发送的是这个:
http://example.com/api/1.1/MONDAY/dosomething
在服务器端,有一个解析过程,也就是说,它期望内容是小写的。
请求失败
如果我将枚举改为完全小写,我就可以确认请求正在起作用。
有时,我直接从第三方库中获取枚举,在那里我无法更改代码。
然而,这违反了 Java 枚举约定,即在代码中将它们设为大写。
如何将 Java 枚举设为大写,但在发送 http 请求时能够将其发送为小写?