spring引导数据rest和资源,带有2个标识符

c9qzyr3d  于 2021-06-26  发布在  Java
关注(0)|答案(0)|浏览(302)

我正在开发一个使用springboot和springdatarest的api来处理大部分crudapi重载。对于我们的资源,我们避免将它们的内部id暴露给最终用户,而是使用slug来标识服务器端的资源。
在本例中,资源由两个slug唯一标识: category-slug 以及 item-slug ,url如下: /items/category-slug/item-slug .
然而,spring数据rest依赖于单个标识符。我编写了一个配置程序,将类别slugMap到如下类别:

public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config, CorsRegistry cors) {
    // Categories are exposed by slug, this is a simple 1:1 conversion.
    config.withEntityLookup().forRepository(CategoryRepository.class, Category::getSlug, CategoryRepository::findBySlug);
}

但是,如何使用两个标识符来实现这一点?下面是我想做但不能做的:

public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config, CorsRegistry cors) {
    config.withEntityLookup().forRepository(
            ItemRepository.class, 
            item -> String.format("%s/%s", item.getCategory.getSlug(), item.getSlug()), 
            ItemRepository::findBySlugAndCategorySlug);
}

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题