最近我开始使用Hydra来管理我的应用程序中的配置。我使用结构化配置为 .yaml 配置文件创建架构。Hyda 中的结构化配置使用数据类进行类型检查。但是,我还想对我在结构化配置中指定的某些参数使用某种验证器(类似这样)。
您知道是否可以使用 Pydantic 来实现此目的吗?当我尝试使用 Pydantic 时,OmegaConf 抱怨它:
omegaconf.errors.ValidationError: Input class 'SomeClass' is not a structured config. did you forget to decorate it as a dataclass?
Run Code Online (Sandbox Code Playgroud) 我一直在努力寻找任何示例来说明如何覆盖默认的 Spring Boot Data Rest JpaRepository 行为以返回 HAL 响应以外的其他内容。我发现 Siren 和 Json-LD 都可以满足要求,但没有任何如何让它与 spring 一起工作的示例。我正在使用 Spring 5、Spring Data Rest 2.0.4.RELEASE。请注意,我不想为自定义休息控制器执行此操作,而是为通过扩展 JpaRepository 提供的默认存储库执行此操作。这是我第一次发帖,因此对于我可能无意中违反的任何规则,我深表歉意。
更新:我能够找到一个具有 SirenMessageConverter 的库 Hydra-Spring,按照存储库上的示例,我能够执行以下操作:
@Configuration
@EnablePluginRegistries(RelProvider.class)
public class Config implements WebMvcConfigurer {
private static final boolean EVO_PRESENT =
ClassUtils.isPresent("org.atteo.evo.inflector.English", null);
@Autowired
private PluginRegistry<RelProvider, Class<?>> relProviderRegistry;
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(sirenMessageConverter());
converters.add(hydraMessageConverter());
converters.add(halConverter());
converters.add(uberConverter());
converters.add(xhtmlMessageConverter());
converters.add(jsonConverter());
}
@Bean
public RepositoryRestConfigurerAdapter repositoryRestConfigurer() {
return new RepositoryRestConfigurerAdapter() {
@Override
public void configureHttpMessageConverters(
List<HttpMessageConverter<?>> messageConverters) {
messageConverters.add(0, sirenMessageConverter());
} …Run Code Online (Sandbox Code Playgroud) 在RESTful Web API一书中,作者建议公开一个配置文件并使用一种确认链接关系的内容类型.Hydra扩展的JSON-LD似乎符合这些要求,我想在我的新API设计中使用它们.
我目前遇到性能问题.假设我有一个在线自行车商店,我想要检索有关给定自行车车轮的信息.
根据Hydra规范,在我看来,我需要发送2个请求来获取有关车轮的详细信息.第一个要求是自行车本身:
GET /mybike HTTP/1.1
Host: wowbike.com
Run Code Online (Sandbox Code Playgroud)
响应包含一个Hydra :: Link到轮子集合:
HTTP/1.1 200 OK
Content-Type: application/ld+json
{
"@context" :
{
"Bike": "/contexts/vocab#Bike"
},
"@id" : "/mybike",
"@type" : "Bike",
"size" : "L",
"wheels" : "/mybike/wheels" // "wheels" is a "hydra:Link"
}
Run Code Online (Sandbox Code Playgroud)
现在我可以向wheel资源发送第二个请求以获取详细信息:
GET /mybike/wheels HTTP/1.1
Host: wowbike.com
HTTP/1.1 200 OK
Content-Type: application/ld+json
{
"@context":
{
"Collection": "http://www.w3.org/ns/hydra/core#Collection",
"Wheel" : "/contexts/vocab#Wheel"
},
"@type" : "Collection",
"@id" : "/mybike/wheels",
"member" :
[
{
"@id" : "/mybike/wheels/firstwheel", …Run Code Online (Sandbox Code Playgroud)