【发布时间】:2015-01-19 09:28:31
【问题描述】:
我有一个 localService,我想通过我们的 restful api 访问它:
@GET
@Path("/some/path")
OutputObject doSomeSpecialCalculation(@QueryParam("input") InputObject obj);
以下问题/问题 - 最好的方法是什么:
- 为了能够创建 InputObject,我需要很多不同的输入数据 -> 构造函数看起来像这样:new InputObject(Obj1 o1, Obj2 o2, ..., Obj6 o6);
Q1:是否可以将多个 queryParam 映射到一个对象中?
- 接下来的问题是大部分参数(obj_n)都需要一个特殊的ParamProvider来构造。 (例如,Obj2 o2 的其余调用是一个 id 号,ParamConverter 将 id 映射到正确的对象)
我可以像这样创建一个新的本地服务方法:
@GET
@Path("/some/path")
OutputObject doSomeSpecialCalculation(@QueryParam("obj1") Obj1 ob1, @QueryParam("obj2") Obj2 ob2, ...);
然后我可以为每个 obj_n 创建多个 ParamProviders,它会工作,但我不想在我们的本地服务中创建重复的方法。
Q2:对于我的特定问题是否有更好的解决方案?
TL;DR:
- 我有一个将 ComplexObject 作为输入参数的本地服务方法
- 我想通过 rest 调用访问该方法
- 要创建 ComplexObject,我需要多个对象作为构造函数的参数
- 大多数参数需要一个特殊的映射器/转换器:Restful-Input: id -> Object
如果我可以仅使用注释来解决这个问题,那就太棒了:复杂对象上的@JsonTypeInfo,以及复杂对象构造函数的输入对象上的一些“use-that-converter”注释。
问候,
(使用杰克逊 1.9/jboss eap 6.2)
【问题讨论】:
标签: java rest jakarta-ee jackson jax-rs