gpt4 book ai didi

java - Spring Rest API 与 Feign 客户端和可分页

转载 作者:行者123 更新时间:2023-12-01 23:09:38 24 4
gpt4 key购买 nike

我有一个工作 API,包含我需要的所有 CRUD 方法,但我也有一个 Feign 客户端,当调用我的可分页 GET 方法时,它会抛出异常。我尝试将其更改为 List<>,但最终我需要它保持可分页,此时我不知道发生了什么。

这是原始 API 上的工作 Controller :

@RestController
@RequestMapping("/cargos")
public class CargoController {


@Autowired
private CargoService cargoService;

// ACHAR TODOS
@GetMapping
public Page<Cargo> consultar(Pageable paginacao) {
return cargoService.consultar(paginacao);

}

}

这是原始 API 上的服务:

@Service
public class CargoService {
@Autowired
private CargoRepositorio repositoryCargos;

// BUSCA TODOS
public Page<Cargo> consultar(Pageable paginacao) {
return repositoryCargos.findAll(paginacao);

}
}

这一切都有效,但是在 Feign Client 中,每次调用 get 方法时,都会抛出异常:

catch (InvocationTargetException ex) { ReflectionUtils.rethrowRuntimeException(ex.getTargetException());

这是我的假客户端,我为它提供了服务:

@FeignClient(url="http://localhost:8080/cargos",name="cargo")
public interface CargoFeign {

//BUSCA TODOS
@GetMapping
Page<Cargo> consultar(Pageable paginacao);

和调度程序:

@Component
@Slf4j
public class CargoScheduler {

@Autowired
private CargoFeign cargoFeign;

@Scheduled(cron = "0/1 * * * * *")
public void executar() {
log.debug("executando");

// BUSCANDO TODOS OS CARGOS
Pageable paginacao = PageRequest.of(0, 10, Sort.by( Order.asc("id")));
Page<Cargo> cargo2 = cargoFeign.consultar(paginacao);
System.out.println("Listando Cargos");
System.out.println(cargo2);
}

最佳答案

您可以使用 Spring HATEOAS 提供的一个或多个资源。您需要在客户端添加 spring HATEOAS 依赖项:

compile('org.springframework.boot:spring-boot-starter-hateoas')

在主类中启用 Spring Boot 的超媒体支持:

@EnableHypermediaSupport(type = EnableHypermediaSupport.HypermediaType.HAL)

并更改您的假客户端:

@FeignClient(url="http://localhost:8080/cargos",name="cargo")
public interface CargoFeign {
//BUSCA TODOS
@GetMapping
Resources<Cargo> consultar(Pageable paginacao);

关于java - Spring Rest API 与 Feign 客户端和可分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58381993/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com