在 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