Contenido del curso
0:00/9:38
Cloud SDK vs Cloud Shell: cuándo usar cada uno
Suscríbete para ver másHola mundo en App Engine
Suscríbete para ver másManejo de versiones en App Engine
Suscríbete para ver másDominios personalizados en App Engine
Suscríbete para ver másConfiguración de certificados SSL y dominios personalizados
Suscríbete para ver másSubir código a Google Cloud Source Repositories
Suscríbete para ver másStackdriver Debugger
Suscríbete para ver másUso de Stack Driver Debugger en Google Cloud Platform
Suscríbete para ver másError Reporting
Suscríbete para ver másCómo filtrar logs con Stackdriver Logging
Suscríbete para ver másDetecta cuellos de botella con StackDriver Trace
Suscríbete para ver másConecta tu front-end en JavaScript con Google Cloud Endpoints de forma segura y ordenada. Aquí verás cómo cargar la librería de Google APIs, estructurar un servicio en AngularJS y migrar de peticiones HTTP tradicionales a endpoints REST reutilizables y claros.
¿Cómo consumir APIs con JavaScript y Google APIs client?
Para habilitar el consumo de endpoints desde el navegador, primero se carga la librería de Google APIs en el archivo base de templates. Este archivo concentra los recursos de front-end.
Ejemplo de inclusión del script en templates/base:
<!-- templates/base --> <script src="https://apis.google.com/js/client.js?onload=init"></script>
Claves que se destacan:
¿Cómo cargar y estructurar el servicio en Angular?
El corazón está en un servicio de AngularJS (services.js). Aquí se define un método que recibe nombre del API y versión, y construye la discovery URL bajo el estándar de Google: .../discovery/v1/apis/{api}/{version}/rest. Este método “hace la magia” de conectar el back-end con el front-end y puede reutilizarse en todo el proyecto.
load que recibe apiName y version.discovery/v1/apis/.../rest.Ejemplo orientativo de services.js:
// static/js/angular/services.js angular.module('app').factory('endpointService', function($q) { var builder = {}; // Datos del navegador u otros auxiliares. function loadService(apiName, version) { var deferred = $q.defer(); var apiRoute = window.location.origin + '/discovery/v1/apis/' + apiName + '/' + version + '/rest'; // Cargar la librería y conectar front-end con back-end mediante la URL de discovery. // ... lógica de carga ... // deferred.resolve() cuando el API esté cargado y disponible. return deferred.promise; } return { load: loadService // Aquí pueden exponerse atajos a los recursos/métodos del API una vez cargado. }; });
¿Cómo inicializar desde el controlador en Angular?
En el controlador (controllers.js) se inyecta el servicio y se llama a load pasando el nombre del API (por ejemplo, solicitudesApi) y la versión. Al finalizar, se muestra un log confirmando que las APIs están cargadas.
// static/js/angular/controllers.js angular.module('app').controller('MainCtrl', function($scope, endpointService) { function loadAPIs() { endpointService.load('solicitudesApi', 'v1').then(function() { console.log('APIs cargadas.'); }); } loadAPIs(); });
¿Cómo migrar de HTTP tradicional a endpoints REST?
Antes se enviaba un JSON a una vista en Python mediante una petición HTTP directa. Ahora, con endpoints, se replica el cuerpo del mensaje, pero se invoca directamente el método del API expuesto por el servicio. Se gestiona la respuesta y los errores con una lógica más simple.
// Método moderno: guardar datos usando endpoints $scope.saveDataEndpoints = function(payload) { // Llamar el método definido en el API cargado. // Reemplaza <nombreDeLaApi> y <metodo> por los reales. endpointService.<nombreDeLaApi>.<metodo>(payload) .then(function(resp) { // Caso exitoso: manejar la respuesta como de costumbre. }) .catch(function(err) { // Caso de error: mostrar warning o mensaje al usuario. }); };
Beneficios de este cambio:
load en múltiples pantallas.¿Qué habilidades, conceptos y keywords debes dominar?
Dominar estos puntos acelera el desarrollo y reduce errores al integrar JavaScript con Google Cloud Endpoints.
load(apiName, version)..../discovery/v1/apis/{api}/{version}/rest que estandariza la descripción de recursos.load sirve para múltiples APIs y vistas.¿Ya probaste a crear nuevos endpoints y a llamarlos desde API Explorer? Comparte en comentarios tus avances, dudas y mejoras que te gustaría implementar.