在 spring-data-rest HAL _links 中将 UUID 编码更改为 base-32

Posted

技术标签:

【中文标题】在 spring-data-rest HAL _links 中将 UUID 编码更改为 base-32【英文标题】:Change UUID encoding to base-32 in spring-data-rest HAL _links 【发布时间】:2021-12-14 14:24:42 【问题描述】:

我们最近开始将控制器转换为 spring-data-rest 存储库,但在我们的系统中,我们必须以 base-32 编码 UUID。

我们能够使用 RepositoryRestConfigurer 解决响应内容和 url 的问题,但 UUID 仍以标准格式显示在 _links 中。

当前杰克逊映射器配置:

@Override
public void configureConversionService(ConfigurableConversionService conversionService)

  conversionService.addConverter(String.class, UUID.class, new StringUuidConverter());


@Override public void configureJacksonObjectMapper(ObjectMapper objectMapper)

  SimpleModule module = new SimpleModule();
  module.addSerializer(UUID.class, new UUIDSerialiser());
  module.addDeserializer(UUID.class, new UUIDDeserialiser());

  objectMapper.registerModule(module);

有没有类似的方法来改变_links?

编辑: 我们已决定在传入请求中启用对破折号分隔的 uuid 和 base32 的支持。这不是一个很好的解决方案,但是因为我们的 _links 不是 base32 让客户感到困惑,所以我们仍在寻找合适的解决方案

【问题讨论】:

如果您更改 _link 部分中 uuid 的表示,客户端应用程序可能会请求使用此 base32 编码的 uuid 的链接。您的后端应用是否准备好在不进行隐式解码的情况下提供此链接? 是的,它期望所有 uuid 都以 base32 编码。所以目前链接都以 404 失败 【参考方案1】:

默认情况下,liveness 和 readiness 探测路径使用 Spring Boot 2.x+ 执行器端点。要使用 Spring Boot 1.x 执行器端点路径,您必须调整 liveness 和 readiness 值,如以下示例所示(替换为您的应用程序的名称):

deployer.<application>.kubernetes.livenessProbePath=/health
deployer.<application>.kubernetes.readinessProbePath=/info

要基于每个应用程序自动将 liveness 和 readiness 端点设置为默认 Spring Boot 1.x 路径,您可以设置以下属性:

deployer.<application>.kubernetes.bootMajorVersion=1

【讨论】:

我有点困惑,这会如何改变 uuid 编码?

以上是关于在 spring-data-rest HAL _links 中将 UUID 编码更改为 base-32的主要内容,如果未能解决你的问题,请参考以下文章

Jason中的Spring Data Rest -Disable自我链接(HAL)

Spring Data Rest - 在 Json 中禁用自我链接(HAL)

在 Spring-data-rest 中使用 Access-Control-Request-Method 发出 OPTIONS 请求时出现 NullPointerException

8.3 Android灯光系统_编写HAL_lights.c

如何在 Spring-Data-Rest 中实现细粒度的访问控制?

Spring-Data-Rest 验证器