rest - @pathparam 以及 apache-cxf webservice 的 POST 有效负载
问题描述
我的 impl 类实现的接口看起来像这样
@POST
@Path("/callA/{A}")
public FObj invokeA(@PathParam("A") int a,FObj fobj);
我customRouteBuilder
正在将请求路由到上述公开的服务
.choice().when().simple("${header.operationName} == 'CallA'")
.to("bean:BeanA?method=invokeA")
但是,当我通过从有效负载和路径参数设置对象来从 Rest 客户端访问服务时,我得到 500 内部服务器错误。
org.apache.camel.CamelExecutionException:在交易所执行期间发生异常原因:org.apache.camel.InvalidPayloadException:没有可用的类型:int但具有值:com.dev.tp.FObj
解决方案
当您点击服务时,如果您使用的是 CXFRS 组件(我猜您是),则header.operationName
设置为 的值。来自 jaxrs 规范。骆驼对此一无所知。当您调用带有两个参数的方法时,它会尝试将主体负载转换为第一个参数,并且您会看到异常。invokeA
@PathParam
我建议你看看这篇文章
推荐阅读
- python - 使用 OpenCV 捕获当前帧
- rest - CL_HTPP_CLIENT 代码 400 错误请求 - ABAP
- javascript - 如何使vue firebase调用异步
- schedule - 如何根据数据准确性评估我的软件输出?
- c - 编译 Win32 应用程序时对“StringCbPrintfW”的未定义引用
- json - 使用riverpod通过http从json获取数据的问题
- javascript - 我想比较对象的 JSON 数组中的内部数组并使用 JavaScript 根据条件返回新数组
- azure - Azure 服务总线 - 随机反序列化问题
- linux-kernel - [块层]如何在多队列中启用全局顺序重排序
- php - Laravel:模型的多语言细节