从尚未命名的Google Cloud Endpoints访问请求参数

时间:2014-05-21 23:13:52

标签: google-app-engine rest servlets cloud endpoints

我正在使用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)

1 个答案:

答案 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框架...