有什么方法可以知道 Jersey @__Param fromString 处理程序中正在解析哪个参数?有什么、参数、程序、方法

2023-09-07 08:51:21 作者:路一直都在

我正在使用的 API 已决定接受 UUID 作为 Base32 编码的字符串,而不是 UUID.fromString() 期望.这意味着我不能简单地将 @QueryParam UUID myUuid 写为方法参数,因为转换会失败.

我正在通过编写一个自定义对象来解决这个问题,该对象使用不同的 fromString 转换器与 Jersey @QueryString@FormParam 注释.我希望能够在 fromString 方法中访问转换的上下文,以便提供更好的错误消息.现在,我能做的只有以下几点:

public static Base32UUID fromString(String uuidString) {最终的 UUID uuid = UUIDUtils.fromBase32(uuidString, false);if (null == uuid) {throw new InvalidParametersException(ImmutableList.of("无效的 uuid:" + uuidString));}返回新的 Base32UUID(uuid);}
唯力独存 MMA达人的摔法演示

我希望能够公开 which 参数的 UUID 无效,因此我记录的异常和返回的用户错误一目了然.理想情况下,我的转换方法会有一个额外的细节参数,如下所示:

public static Base32UUID fromString(字符串 uuidString,String parameterName//新参数?) {最终的 UUID uuid = UUIDUtils.fromBase32(uuidString, false);if (null == uuid) {throw new InvalidParametersException(ImmutableList.of("无效的 uuid:" + uuidString+ " 为参数 " + parameterName));}返回新的 Base32UUID(uuid);}

但这会打破 按惯例意味着 Jersey 找到解析方法: