我在Google Cloud Endpoints上将列表作为方法参数而苦苦挣扎。

文件说


  支持的参数类型如下:
  
  
  参数类型的java.util.Collection
  


我试图用这种方式来做,但是却行不通。
基本端点方法:

@ApiMethod(name = "testMethod", httpMethod = HttpMethod.POST)
public void testMethod(@Named("longList") List<Long> longList) {
    for (Long aLong : longList) {
        if (aLong < 5) {
            throw new IllegalArgumentException("You can't do it");
        }
    }
}


当我使用API​​ Exploler执行此方法时,生成的URL为:

POST http://localhost:8080/_ah/api/billEndpoint/v1/testMethod?longList=5&longList=6


并且该方法正确执行。

但是当使用Android库时,URL更改为:

http://APP_ENGINE_BACKEND:8080/_ah/api/billEndpoint/v1/testMethod/5,6


端点返回404代码。

有可能将List作为方法参数,如果这是我做错了?

最佳答案

请在方法中添加@Nullable批注,这会将您的collection-type参数从路径转换为查询参数。

https://developers.google.com/appengine/docs/java/endpoints/annotations#nullable

10-04 10:07