我正在使用Google Cloud Endpoints并拥有GET方法。我正在使用的前端库添加了以下约定命名的请求参数:
bSortable_ {INT}
bSortable_0 bSortable_1 bSortable_2 bSortable_3 ......
这些参数的数量总是会有所不同,具体取决于使用的列数。还有许多其他命名参数遵循相同的约定。
由于这些参数是以某种动态命名和提供的,因此为每个参数创建一个@Nullable @Named参数是不可行的。我认为我会做的是注入HttpServletRequest并从请求中获取参数,但看起来Cloud Endpoints API可能在它到达我的方法之前将它们剥离了。
请求URI:
_ah/api/myapp/v1/list?bSortable_0=true&bSortable_1=true&bSortable_2=true&bSortable_3=true
Api方法:
@ApiMethod
public getList(HttpServletRequest request) {
int len = request.getParameterMap().size(); // len == 0
}
我怀疑这可能是设计上的。如果没有创建任意数量的可能超过50分的命名参数,还有任何建议吗?
编辑:事实上,命名参数甚至不是一种解决方法,我希望能够像地图一样访问这些参数......
map.get("bSortable_" + myInt)
request.getParameter("bSortable_" + myInt)
答案 0 :(得分:1)
我认为在这种情况下,云端点可能不。 在您的位置,我将使用(坏)解决方法,如构建单个命名参数,使用分隔符。例如:
请求URI:
_ah/api/myapp/v1/list?filter=bSortable_0::true||bSortable_1::true||bSortable_2::true||bSortable_3::true
方法:
@ApiMethod
public getList({@Named} filter) {
String[] params = filter.split("||");
}
Google Cloud Endpoints是一个非常特殊的REST框架...