Configurar un entorno de desarrollo

En esta página, se describe cómo configurar tu entorno de desarrollo a fin de compilar y, luego, implementar tu API de backend con Cloud Endpoints Frameworks para el entorno estándar de App Engine. En esta página, se usa la muestra de código de la versión 2.0 de Endpoints Frameworks a fin de explicar el software básico y los componentes necesarios para comenzar.

Se recomienda usar endpoints-skeleton-archetype o hello-endpoints-archetype, como se describe en Usa Apache Maven y el complemento de App Engine (basado en la CLI de Google Cloud) para crear un proyecto nuevo de Endpoints Frameworks versión 2.0.

Para comprender mejor los pasos necesarios a fin de implementar una API de muestra con Endpoints Frameworks, consulta el instructivo Comienza a usar Endpoints Frameworks en App Engine.

Antes de comenzar

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Obtén información sobre cómo verificar si la facturación está habilitada en un proyecto.

  4. En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  5. Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Obtén información sobre cómo verificar si la facturación está habilitada en un proyecto.

  6. Toma nota del ID del proyecto de Google Cloud, ya que lo necesitarás más tarde.

Instala y configura el software necesario

  1. Si no tienes Java 8 instalado, descarga el Java Development Kit (JDK) del sitio de Oracle y, luego, instálalo.
  2. Instala Maven o Gradle:

    Maven

    1. Descargar la versión 3.3.9 o superior de Apache Maven
    2. Instala y configura Maven para tu entorno de desarrollo local.

    Gradle

  3. Descarga y, luego, inicializa la CLI de Google Cloud.
  4. Ejecuta los siguientes comandos:
    1. Asegúrate de que la CLI de gcloud esté autorizada para acceder a tus datos y servicios en Google Cloud:
      gcloud auth login
    2. Usa las credenciales predeterminadas de la aplicación:
      gcloud auth application-default login
    3. Instala el componente app-engine-java del SDK de Google Cloud:
      gcloud components install app-engine-java
    4. Actualiza a la última versión del SDK de Google Cloud y todos los componentes:
      gcloud components update
  5. Crea una aplicación de App Engine:
    1. Configura el proyecto predeterminado como el ID de tu proyecto de Google Cloud:
      gcloud config set project YOUR_PROJECT_ID

      Reemplaza YOUR_PROJECT_ID por el ID del proyecto de Google Cloud. Si tienes otros proyectos de Google Cloud y quieres usar gcloud para administrarlos, consulta Administra la configuración de la CLI de gcloud.

    2. Selecciona la región en la que deseas crear tu aplicación de App Engine. Consulta Ubicaciones de App Engine para obtener una lista de regiones.
    3. Crear una aplicación de App Engine Reemplaza YOUR_PROJECT_ID por el ID de tu proyecto de Google Cloud y YOUR_REGION por la región en la que quieres crear tu aplicación de App Engine.
        gcloud app create \
        --project=YOUR_PROJECT_ID \
        --region=YOUR_REGION
      

Obtén la muestra de la estructura de Endpoints Frameworks

El esqueleto de muestra de Endpoints Frameworks versión 2.0 contiene las secuencias de comandos de compilación necesarias para Maven y Gradle. También contiene los archivos necesarios para comenzar a crear tu primera API.

  1. Clona el repositorio de muestra en tu máquina local:

     git clone https://github.com/GoogleCloudPlatform/java-docs-samples
    
  2. Cambia al directorio que contiene la muestra de esqueleto de Endpoints Frameworks:

     cd java-docs-samples/appengine-java8/endpoints-v2-skeleton/
    

    La muestra tiene la siguiente estructura de directorios:

    Diseño de muestra de la estructura de Endpoints Frameworks

    • MyApi.java contiene una clase vacía que puedes usar para comenzar a escribir tu API. Consulta el ejemplo de eco para obtener un código de muestra que te ayudará a comenzar.

    • web.xml es un archivo estándar que se usa para configurar un servlet.

    • appengine-web.xml define la información necesaria para implementar la API en el entorno estándar de App Engine mediante Java 8.

    • pom.xml contiene información de proyectos y configuración que usa Maven para compilar el proyecto y, luego, implementar la API en App Engine.

    • build.gradle contiene información de proyectos y configuración que usa Gradle para compilar el proyecto e implementar la API en App Engine.

Configura los archivos de compilación

En esta sección, se describen los archivos pom.xml y build.gradle de Maven que se incluyen en el código de muestra. Los archivos de compilación están listos para que puedas comenzar a crear tu API; solo debes ingresar tu ID del proyecto de Google Cloud a fin de que se pueda usar en el nombre de host.

Acerca de la configuración mínima

En esta sección, se describe la configuración mínima necesaria en el archivo de compilación.

Maven

Dependencias mínimas

A continuación, se muestran las dependencias mínimas requeridas en tu pom.xml para comenzar:

<dependencies>
  <!-- Compile/runtime dependencies -->
  <dependency>
    <groupId>com.google.endpoints</groupId>
    <artifactId>endpoints-framework</artifactId>
    <version>2.2.2</version>
  </dependency>
  <dependency>
    <groupId>com.google.appengine</groupId>
    <artifactId>appengine-api-1.0-sdk</artifactId>
    <version>2.0.3</version>
  </dependency>
  <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.1</version>
    <type>jar</type>
    <scope>provided</scope>
  </dependency>
  <dependency>
    <groupId>javax.inject</groupId>
    <artifactId>javax.inject</artifactId>
    <version>1</version>
  </dependency>
</dependencies>

  • La dependencia endpoints-framework contiene las clases necesarias para crear tu API.
  • Necesitas las <atrack-type="tasks" l10n-attrs-original-order="href,track-type,track-name,track-metadata-position" l10n-encrypted-href=&https.
  • Se requiere el paquete estándar javax.servlet para compilar un servlet.
  • Se requiere el paquete estándar javax.inject para admitir la inyección de dependencias.

Cómo aplicar complementos

Se aplican los siguientes complementos para habilitarlos:

<build>
  <!-- for hot reload of the web application-->
  <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/classes</outputDirectory>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-war-plugin</artifactId>
      <version>3.3.2</version>
      <configuration>
        <webResources>
          <resources>
            <directory>${basedir}/src/main/webapp/WEB-INF</directory>
            <filtering>true</filtering>
            <targetPath>WEB-INF</targetPath>
          </resources>
        </webResources>
      </configuration>
    </plugin>
    <plugin>
      <groupId>com.google.cloud.tools</groupId>
      <artifactId>appengine-maven-plugin</artifactId>
      <version>2.4.1</version>
      <configuration>
        <!-- deploy configuration -->
        <projectId>GCLOUD_CONFIG</projectId>
        <version>GCLOUD_CONFIG</version>
      </configuration>
    </plugin>
    <plugin>
      <groupId>com.google.cloud.tools</groupId>
      <artifactId>endpoints-framework-maven-plugin</artifactId>
      <version>2.1.0</version>
      <configuration>
        <!-- plugin configuration -->
        <!--
        You must replace YOUR_PROJECT_ID with your
        Google Cloud Project Id
      -->
      <hostname>YOUR_PROJECT_ID.appspot.com</hostname>
    </configuration>
  </plugin>
</plugins>
</build>
  • maven-war-plugin extiende el complemento java para agregar compatibilidad con una aplicación web.
  • Se requiere appengine-maven-plugin para ejecutar la API en App Engine.
  • endpoints-framework-maven-plugin proporciona tareas y configuraciones para compilar proyectos de Endpoints Frameworks.

Gradle

Dependencias de complementos

A continuación, se muestran los complementos necesarios para compilar tu API:

buildscript {
  repositories {
    mavenCentral()
  }

  dependencies {
    classpath 'com.google.cloud.tools:endpoints-framework-gradle-plugin:2.1.0'
    classpath 'com.google.cloud.tools:appengine-gradle-plugin:2.4.2'
  }
}

Cómo aplicar complementos

Se aplican los siguientes complementos para habilitarlos en tu secuencia de comandos de compilación de Gradle:

apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'com.google.cloud.tools.endpoints-framework-server'
apply plugin: 'com.google.cloud.tools.appengine'

  • El complemento java agrega pasos de compilación y compilación específicos de Java a tu proyecto.
  • El complemento war extiende el complemento java para agregar compatibilidad con una aplicación web.
  • El complemento endpoints-framework-server proporciona compatibilidad del lado del servidor con el complemento de Gradle para Endpoints Frameworks.
  • Se requiere el complemento appengine para ejecutar la API en App Engine.

Dependencias del proyecto

El proyecto usa las siguientes dependencias:

dependencies {
    compile 'com.google.endpoints:endpoints-framework:2.2.2'
    compile 'com.google.appengine:appengine-api-1.0-sdk:2.0.3'

    compile 'javax.inject:javax.inject:1'
    compileOnly 'javax.servlet:javax.servlet-api:4.0.1'
}

Define el nombre de host para tu servicio

Endpoints Frameworks usa nombres compatibles con DNS para identificar de forma única los servicios. Debido a que se garantiza que los ID del proyecto de Google Cloud son únicos a nivel global, debes usar tu ID del proyecto de Google Cloud como parte del nombre del servicio de la API.

Debes agregar el ID de tu proyecto de Google Cloud a los archivos de compilación a fin de configurar el nombre de host para tu servicio. El nombre del host debe tener el siguiente formato:

YOUR_PROJECT_ID.appspot.com

Cuando implementas la API en App Engine, se crea una entrada DNS con un nombre con el formato YOUR_PROJECT_ID.appspot.com de forma automática. El nombre de host es el nombre del servicio de Cloud Endpoints y el nombre de dominio que usas para enviar solicitudes a tu API.

Maven

  <plugin>
    <groupId>com.google.cloud.tools</groupId>
    <artifactId>endpoints-framework-maven-plugin</artifactId>
    <version>2.1.0</version>
    <configuration>
      <!-- plugin configuration -->
      <!--
      You must replace YOUR_PROJECT_ID with your
      Google Cloud Project Id
    -->
    <hostname>YOUR_PROJECT_ID.appspot.com</hostname>
  </configuration>
</plugin>

En el campo hostname, reemplaza YOUR_PROJECT_ID por tu ID del proyecto de Google Cloud.

Gradle

// You must replace YOUR_PROJECT_ID with your Google Cloud Project Id
def projectId = 'YOUR_PROJECT_ID'

endpointsServer {
  // Endpoints Framework Plugin server-side configuration
  hostname = "${projectId}.appspot.com"
}

Configura la variable projectID con el ID de tu proyecto de Google Cloud. Por ejemplo: def projectId = 'example-project-12345'

Configura el servlet de Endpoints

El servlet de Endpoints controla las solicitudes entrantes y las reenvía al servicio de backend que se ejecuta en App Engine. El servlet de Endpoints es necesario para que API lo administre a tu API.

Para obtener más información sobre web.xml, consulta El descriptor de implementación: web.xml.

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
         http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <!-- Wrap the backend with Endpoints Frameworks v2. -->
    <servlet>
        <servlet-name>EndpointsServlet</servlet-name>
        <servlet-class>com.google.api.server.spi.EndpointsServlet</servlet-class>
        <init-param>
            <param-name>services</param-name>
            <param-value>com.example.skeleton.MyApi</param-value>
        </init-param>
    </servlet>
    <!-- Route API method requests to the backend. -->
    <servlet-mapping>
        <servlet-name>EndpointsServlet</servlet-name>
        <url-pattern>/_ah/api/*</url-pattern>
    </servlet-mapping>
</web-app>

Configura tu implementación de App Engine

El archivo appengine-web.xml se usa para definir la configuración del entorno estándar de App Engine cuando se implementa la API. Consulta la referencia de appengine-web.xml para obtener más información.

<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
    <runtime>java8</runtime>
    <threadsafe>true</threadsafe>

    <system-properties>
        <property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/>
    </system-properties>
</appengine-web-app>

Próximos pasos