[英]How to pass Pageable to Feign Client in POST Request with additional @RequestBody
[英]Spring RestAPI with Feign Client and Pageable
我有一個工作 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:
@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')
在您的主 class 中啟用 Spring 引導的超媒體支持:
@EnableHypermediaSupport(type = EnableHypermediaSupport.HypermediaType.HAL)
並更改您的假客戶:
@FeignClient(url="http://localhost:8080/cargos",name="cargo")
public interface CargoFeign {
//BUSCA TODOS
@GetMapping
Resources<Cargo> consultar(Pageable paginacao);
澄清一下,這個回答有點幫助
Spring 數據分頁不支持作為假客戶端中的 RequestParam
這就是我的假客戶現在的樣子
//BUSCA TODOS
@GetMapping("/pagina/{paginaAtual}/tamanho/{tamanho}")
Page<Cargo> findAll(@PathVariable("paginaAtual") Integer paginaAtual, @PathVariable("tamanho") Integer tamanho);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.