我使用Camel Rest(带有restlet组件),我有以下API:
rest("/order")
.get("/{orderId}").produces("application/json")
.param().dataType("int").type(RestParamType.path).name("orderId").endParam()
.route()
.bean(OrderService.class, "findOrderById")
.endRest()
.get("/customer").produces("application/json").route()
.bean(OrderService.class, "findOrderByCustomerId")
.endRest()
问题是/ order / customer不起作用(参见下面的例外)。 / customer的参数来自JWT ...
java.lang.String到所需类型:java.lang.Long with value 客户到期非法字符:客户
我认为骆驼会将... / {orderId}参数与... / customer混淆。 如果我为/ customer / orders更改/ customer,它就会起作用。
Spring Boot中的相同想法可以用:
@RequestMapping("/order/{orderId}")
public Order getOrder(@PathVariable Long orderId) {
return orderRepo.findOne(orderId);
}
@RequestMapping("/order/customer")
public List<Order> getOrder() {
return orderRepo.listOrderByCustomer(1l);
}
关于发生了什么事的想法?
答案 0 :(得分:1)
尝试更改Camel Rest DSL中GET操作的顺序。 restlet组件在匹配最佳方法时有一些问题。
有几张与此相关的JIRA门票: