【发布时间】:2019-12-09 20:49:11
【问题描述】:
我的问题几乎是 1:1 的 this one。我唯一的区别(和挣扎)是我的“数据容器”有一个对象集合。它看起来像这样:
public class A {
int plainFieldA;
B fieldB;
List<B> collectionB = new ArrayList<>();
}
public class B {
int plainFieldB;
}
@Transactional(readOnly = true)
@GetMapping("")
public Entity getAll(A reqParam) {
return getAll(reqParam);
}
是否可以在不创建转换器的情况下在 url http://localhost/api/test?plainFieldA=1 的参数中定义 collectionB ? @GameSalutes 正确地指出,从春天开始 4 我们可以做 fieldB.plainFieldB=2 所以网址将是:http://localhost/api/test?plainFieldA=1&fieldB.plainFieldB=2 但问题是我们可以在不创建转换器的情况下用 collectionB 做类似的事情吗?
【问题讨论】:
-
这是个好问题。我认为这是不可能的,因为列表中的值表示存在问题。你会如何代表他们?集合B[0].plainFieldB?如果你有 100 个值?不要忘记
Get映射依赖于 httpGET方法,并且 QueryString 的大小是有限制的。 -
由于
GET方法的字符大小限制,我会选择在这种情况下调用POST -
看起来您正在尝试实现搜索以根据不同的参数搜索某些内容。如果你想实现基于不同参数的搜索,那么我会推荐你使用“解释器模式”而不用担心额外的处理。 en.wikipedia.org/wiki/Interpreter_pattern
标签: java spring spring-boot