with started google getting engine app java android google-app-engine google-cloud-endpoints

java - started - Al pasar la lista de primitivas encuadradas a Google Cloud Endpoint



getting started with endpoints frameworks on app engine (2)

Agregue la anotación @Nullable a su método, que convertirá su parámetro de tipo colección de una ruta en un parámetro de consulta.

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

Estoy luchando con las listas como parámetros de método en Google Cloud Endpoints.

La documentación dice que

Los tipos de parámetros admitidos son los siguientes:

  • java.util.Collection de un tipo de parámetro

Intenté hacerlo de esta manera, pero simplemente no funciona. Método de punto final básico:

@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"); } } }

Cuando ejecuto este método usando API Exploler, la URL generada es:

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

Y el método se ejecuta correctamente.

Pero cuando se usa la biblioteca de Android, la url se cambia a:

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

y el código de retorno 404 del punto final.

Es posible tener Lista como parámetro de método y si es lo que estoy haciendo mal?


Una forma más directa es agregar una propiedad de ruta a la anotación API_METHOD y no incluir el parámetro List en la ruta. Como se indica aquí : "Si se especifica la ruta, los parámetros pueden hacerse parámetros de consulta al no incluirlos en la ruta"

En tu caso, debería verse así:

@ApiMethod (name = "testMethod", path = "testMethod" httpMethod = HttpMethod.POST)