Spring Data Rest - 添加指向搜索端点的链接

时间:2015-09-25 09:17:02

标签: spring spring-data-rest spring-hateoas

在我们的Spring-Data-Rest项目中,我们在/ buergers / search / findBuergerFuzzy?searchString =“...”端点上进行了自定义(模糊)搜索。

是否可以在/ buergers / search端点上添加链接(不覆盖自动公开的Repository findBy方法)?

Controller公开搜索:

load yourstuff
from yourfile
where index(givenstring,'Teddybear')=0;

2 个答案:

答案 0 :(得分:5)

挖掘spring-data-rest源我发现RepositorySearchesResource似乎解决了这个问题。

@Component
public class SearchResourcesProcessor implements ResourceProcessor<RepositorySearchesResource> {

    @Override
    public RepositorySearchesResource process(RepositorySearchesResource repositorySearchesResource) {
        final String search = repositorySearchesResource.getId().getHref();
        final Link findFullTextFuzzy = new Link(search + "/findFullTextFuzzy{?q}").withRel("findFullTextFuzzy");
        repositorySearchesResource.add(findFullTextFuzzy);

        return repositorySearchesResource;
    }
}

因为我们通过模板生成此代码,所以这足以满足我们的需求。请务必以正确和安全的方式检查评论。

答案 1 :(得分:1)

版本

migrate-to-1.0.changes

<块引用>

ResourceSupport 现在是 RepresentationModel

资源现在是实体模型

资源现在是 CollectionModel

PagedResources 现在是 PagedModel

代码

新版本代码:

import org.springframework.data.rest.webmvc.RepositorySearchesResource;
import org.springframework.hateoas.Link;
import org.springframework.hateoas.server.RepresentationModelProcessor;
import org.springframework.stereotype.Component;

@Component
public class RepositorySearchesProcessor implements RepresentationModelProcessor<RepositorySearchesResource> {

    @Override
    public RepositorySearchesResource process(RepositorySearchesResource model) {
        System.out.println(model.getDomainType());
        model.add(Link.of(model.getRequiredLink("self").getHref() + "/findFullTextFuzzy{?q}").withRel("findFullTextFuzzy"));
        return model;
    }
}

如何

关于如何找到你使用的资源或模型,在RepresentationModel的每个方法中设置断点后,你可能会发现一些有用的东西:

enter image description here