En esta página se enumeran los tipos de datos que puedes usar como tipos de parámetros de API en los parámetros de ruta o de consulta de los métodos de tu API backend, así como los tipos que puedes usar como tipos de valor devuelto de métodos o tipos de cuerpo de solicitud.
Tipos admitidos para parámetros de ruta y de consulta
Los tipos admitidos para los parámetros de ruta y de consulta son los siguientes:
java.lang.Stringjava.lang.Booleanybooleanjava.lang.Integeryintjava.lang.Longylongjava.lang.Floatyfloatjava.lang.Doubleydoublejava.util.Datecom.google.api.server.spi.types.DateAndTimecom.google.api.server.spi.types.SimpleDate- Cualquier
enum - Cualquier matriz o
java.util.Collectionde los tipos que se indican aquí. No se admiten matrices ni colecciones de otros tipos.
Para especificar un parámetro como parámetro de ruta o de consulta, anota el parámetro con @Named.
Por ejemplo:
public Resource get(@Named("id") int id) { … }
Parámetros de ruta
Los parámetros de ruta son los parámetros de método incluidos en la propiedad path de la anotación @ApiMethod. Si no se especifica path, los parámetros que no estén anotados con @Nullable o @DefaultValue se añadirán automáticamente a la ruta como parámetros de ruta. Por ejemplo:
public Resource get(@Named("id") int id) { … }
Para añadir manualmente un parámetro a path, incluye el nombre del parámetro entre comillas {} en la ruta. Los parámetros que se añaden manualmente a path no se pueden anotar con @Nullable ni @DefaultValue. Por ejemplo:
@ApiMethod(path = "resources/{id}")
public Resource get(@Named("id") int id) { … }
Los parámetros de consulta
Los parámetros de consulta son los parámetros de método que no se incluyen en la propiedad path de la anotación @ApiMethod. Tenga en cuenta que los parámetros opcionales, es decir, los que tienen la anotación @Nullable o @DefaultValue, nunca se añaden automáticamente a path, por lo que son parámetros de consulta automáticamente si no se especifica ningún path.
Por ejemplo:
public Resource get(@Named("id") @Nullable int id) { … }
Si se especifica path, puede hacer que los parámetros sean parámetros de consulta si no los incluye en path. Por ejemplo:
@ApiMethod(path = "resources")
public Resource get(@Named("id") int id) { … }
Tipos insertados
Los tipos insertados son aquellos que reciben un tratamiento especial por parte de los frameworks de Cloud Endpoints. Si se usa este tipo como parámetro de método, no se incluye en la API. En su lugar, Endpoints Frameworks rellena el parámetro.
Los tipos insertados son los siguientes:
com.google.appengine.api.users.Userjavax.servlet.http.HttpServletRequestjavax.servlet.ServletContext
Tipos de entidad
En la documentación de Endpoints Frameworks, los tipos de entidades son sinónimos de Java Beans. Las clases que definas para usar en tu API deben cumplir los siguientes requisitos:
- Tener un constructor público que no tome ningún argumento.
- Controla el acceso a las propiedades privadas mediante getters y setters. Además, cada setter solo debe aceptar un parámetro.
Normalmente, los tipos de entidades también implementan Serializable, pero no es obligatorio para usar Endpoints Frameworks.
No uses la anotación @Named para los parámetros de tipo de entidad.
Cuerpo de la solicitud
Cuando envías un tipo de entidad como parámetro en un método, las propiedades del tipo de entidad se asignan a los campos JSON del cuerpo de la solicitud. Tus métodos deben contener solo un parámetro de tipo de entidad. Por ejemplo:
public Resource set(Resource resource) { … }
Puede incluir parámetros de tipo no entidad y un parámetro de tipo entidad en un método. Por ejemplo:
@ApiMethod(name = "echo")
public Message echo(Message message, @Named("n") @Nullable Integer n) { … }
En el ejemplo anterior, las propiedades del parámetro message se asignan a los campos JSON del cuerpo de la solicitud. La anotación
@Nullable
indica que el parámetro n es opcional, por lo que se envía como parámetro de consulta.
El objeto de respuesta
El valor devuelto por el método debe ser uno de los siguientes:
- Un tipo de entidad
- Un tipo genérico
- CollectionResponse (
com.google.api.server.spi.response.CollectionResponse) o una subclase de CollectionResponse
Los campos JSON del objeto de respuesta se asignan a partir de las propiedades del valor devuelto.
Efecto de @ApiTransformer en los tipos
Si usas @ApiTransformer, debes saber cómo afecta la transformación al tipo.
@ApiTransformer y tipos de parámetros
Cuando se usa un @ApiTransformer, si el parámetro de método resultante se considera un tipo de parámetro depende del resultado de la transformación, no del tipo original. Si un tipo se transforma en un tipo de parámetro, el parámetro del método se considera un parámetro de API y debe anotarse con @Named.
@ApiTransformer y tipos de entidades
Del mismo modo, si un parámetro de método o un tipo de valor devuelto se considera un tipo de entidad depende del resultado de la transformación, no del tipo original. Si un tipo se transforma en un tipo de entidad, se puede usar como tipo de retorno y, cuando se usa como parámetro de método, no se puede anotar con @Named, ya que se considera un tipo de entidad.
@ApiTransformer y los tipos inyectados
Los tipos insertados no se ven afectados por un @ApiTransformer. Un parámetro de método solo se considera un tipo insertado si su tipo original sin transformar es un tipo insertado.