Spring boot 在Spring引导数据Rest中公开自定义端点到基本路径

Spring boot 在Spring引导数据Rest中公开自定义端点到基本路径,spring-boot,spring-data-rest,Spring Boot,Spring Data Rest,我使用的是Spring Boot Data Rest,我可以使用以下url列出所有端点: http://localhost:8080/api 它列出了以下端点: { "_links": { "tacos": { "href": "http://localhost:8080/api/tacos{?page,size,sort}", "templated": true }, "orders": { "href": "http:

我使用的是Spring Boot Data Rest,我可以使用以下url列出所有端点:

http://localhost:8080/api
它列出了以下端点:

{
"_links": {
    "tacos": {
        "href": "http://localhost:8080/api/tacos{?page,size,sort}",
        "templated": true
    },
    "orders": {
        "href": "http://localhost:8080/api/orders"
    },
    "ingredients": {
        "href": "http://localhost:8080/api/ingredients"
    },
    "profile": {
        "href": "http://localhost:8080/api/profile"
    }
}
}

但我在控制器中创建了一个自定义端点,如下所示

@RepositoryRestController
public class RecentTacosController {

private TacoRepository tacoRepo;

public RecentTacosController(TacoRepository tacoRepo) {
    this.tacoRepo = tacoRepo;
}

@GetMapping(path = "/tacos/recent", produces = "application/hal+json")
public ResponseEntity<Resources<TacoResource>> recentTacos() {

    PageRequest page = PageRequest.of(0, 12, Sort.by("createdAt").descending());
    List<Taco> tacos = tacoRepo.findAll(page).getContent();
    List<TacoResource> tacoResources = new TacoResourceAssembler().toResources(tacos);
    Resources<TacoResource> recentResources = new Resources<TacoResource>(tacoResources);
    recentResources.add(ControllerLinkBuilder.linkTo(ControllerLinkBuilder.methodOn(RecentTacosController.class).recentTacos()).withRel("recents"));
    return new ResponseEntity<>(recentResources, HttpStatus.OK);
}
@RepositoryRestController
公共类远程控制器{
私人他克力普;
公共通讯控制器(TacoRepository tacoRepo){
this.tacoRepo=tacoRepo;
}
@GetMapping(path=“/tacos/recent”,products=“application/hal+json”)
公众反应近期{
PageRequest page=PageRequest.of(0,12,排序方式(“createdAt”).descending());
List tacos=tacoRepo.findAll(page.getContent();
List tacoResources=new tacoresourcesassembler().toResources(tacos);
资源重新集中资源=新资源(tacoResources);
add(ControllerLinkBuilder.linkTo(ControllerLinkBuilder.methodOn(recenttacoscoscocontroller.class).recentTacos()).withRel(“recents”);
返回新的响应状态(recentResources,HttpStatus.OK);
}
}


但在执行GET on base path时,此端点()未列出。

在您的一个类(可能是控制器本身)中实现
ResourceProcessor
,添加以下方法:

  @Override
  public RepositoryLinksResource process(RepositoryLinksResource resource) {
    resource.add( ... );
    return resource;
  }

。。。并在其中创建并添加到自定义方法的适当链接。

在您的一个类(可能是控制器本身)中实现
ResourceProcessor
,添加以下方法:

  @Override
  public RepositoryLinksResource process(RepositoryLinksResource resource) {
    resource.add( ... );
    return resource;
  }
。。。并在那里创建并添加到自定义方法的适当链接