我正在开发一个使用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);
}
暂无答案!
目前还没有任何答案,快来回答吧!