Como crear un mock REST API en AWS API Gateway en 7 minutos

API Gateway es el servicio de AWS que te permite crear APIs públicas y privadas. AWS ofrece varias formas para hacerlo y en este artículo nos enfocaremos en como crear un mock de una REST API.

Creación del API en la consola

Lo primero que necesitas hacer es entrar a tu cuenta de AWS y buscar la opción de API Gateway.

A continuación selecciona la opción de crear una REST API pública. La UI diferirá si en la cuenta en la qué estas trabajando ya tiene REST APIs o no.

Captura de pantalla del listado de APIs en API Gatewway señanlando el botón superior derecho que dice "Crear API".

Configura las opciones de la siguiente manera:

  • Protocolo: REST
  • Crear API nueva: API nueva
  • Nombre de API: SampleAPI
  • Descripción: Una API de muestra
  • Tipo de punto de enlace: Regional
Captura de pantalla del formulario de creación de API con las opciones anteriores.

Creación de un recurso

Una vez creada estarás por defecto en la sección de Recursos de tu API. Para crear un recurso, selecciona:
Acciones->Crear recurso

Captura de pantalla de dashboard de SampleAPI, señalando la opción de "Crear Recurso" dentro del menú de "Acciones".

En este ejemplo crearemos un recurso sample. Para evitarte problemas de acceso y poder hacer pruebas siempre te recomiendo que habilites la opción de CORS. Si no sabes qué es CORS puedes revisar aquí.

*Ten en cuenta que entender CORS es importante para decidir si lo necesitas activar o no en tu proyecto, sin embargo si sólo vas a hacer pruebas no es necesario que lo entiendas aún..

Captura de pantalla de dashboard de SampleAPI señalando "Crear recurso" con el path raíz seleccionado.

Una vez creado el recurso, API Gateway mostrará la siguiente interfaz con tu recurso creado y los métodos del mismo.

*El método de OPTIONS aparece por haber habilitado la opción de CORS. Si no habilitaste esta opción, este elemento no aparecerá.

Captura de pantalla de dashboard de SampleAPI mostrando la interfaz de OPTIONS del recurso de /sample.

Creación de un método

Ahora agregaremos el método GET a nuestro recurso. Para ello debes selccionarlo y hacer click en:
Acciones->Crear método

Captura de pantalla remarcando la opción de "Crear método" dentro del menú de Acciones con el recurso sample seleccionado.

En la lista selecciona GET. Y haz click en el símbolo para aceptar la creación del mismo.

Captura de pantalla mostrando el listado de métodos a elegir, con GET seleccionado.

Una vez creado API Gateway te pregunta acerca del tipo de integración que va a tener este método. Las opciones son para poder enlazar tu método con las mismas funciones de Lambda de AWS, con otros APIs pre-existentes (HTTP), con otros servicios de AWS, con un enlace de una VPN o para hacer una simulación/mock del API.

Captura de pantalla mostrando la opciones de configuración del método GET.

Para este ejemplo nosotros seleccionaremos la opción de simulación. Si bien esta opción no es muy utilizada es muy útil por si necesitas precisamente simular el funcionamiento de tu API y probar la conexión con AWS sin necesariamente trabajar en la funcionalidad de la misma.

Captura de pantalla mostrando la opción de Simulación seleccionada.

Una vez creado el método debes ver una pantalla como esta.

Captura de pantalla mostrando las opciones dipsonibles dentro del método GET: Solicitud de método, Solicitud de integración, Respuesta de método, Respuesta de integración.

Las opciones sirven para definir los parámetros, headers o body que necesitas que tengan las llamadas, y para definir las respuestas que quieres que devuelva acorde al código de respuesta de tu API. En este caso no cambiaremos ninguna. (Ya en otro post veremos mas a fondo estas opciones)

Publicación del API

Técnicamente nuestra API ya esta lista para usarse pero aún no esta publicada. ¿Cómo hacemos eso?
Fácil. Selecciona Acciones->Implementar la API

Captura de pantalla remarcando la opción de "Implementar la API" dentro del menu de "Acciones" con el método GET seleccionado.

Se te abrirá una ventana en donde seleccionarás la etapa de tu API y llenarás información acerca de la implementación.

Es importante que entiendas la diferencia entre ‘implementación’ y ‘etapa’ dentro de API Gateway.

Una implementación es como una versión de tu API. Necesitarás crear una nueva implementación cada vez que hagas un cambio, ya sea agregar, cambiar o borrar algun recurso o método.

Una etapa tiene como propósito ser usada como diferentes ambientes de desarrollo de tu API, de manera que puedas hacer públicas diferentes versiones de la misma. Un caso de uso normal sería crear una para tu equipo de desarrollo en donde puedas trabajar y hacer cambios, una para QA y una o varias para la versiónes de producción.

Para este ejemplo estoy llenando las opciones con la siguiente información:

  • Etapa de implementación: [Nueva etapa]
  • Nombre de la fase: dev
  • Descripción de etapa: Etapa de desarrollo
  • Descripción de implementación: Base

Sin embargo lo puedes llenar con los datos que tu quieras.

*En este caso al no exisitir ninguna etapa previamente API Gateway me obliga a crear una al crear la implementación. Si ya tenías una etapa puedes seleccionar esa misma o crear una nueva también.

Captura de pantalla mostrando el formulario de la ventana "Implementar la API"  lleno con la información anterior.

Ahora en la sección de Etapas podemos ver la etapa que seleccionamos con los recursos que creamos para esta nueva implementación.

A su vez si te vas a la pestaña de Historial de Implementaciones, podrás ver un listado con las diferentes implementaciones que hayas creado, incluyendo la que está utilizando la etapa actualmente.

Captura de pantalla mostrando la  etapa creada en la seccion de "Etapas" en la pestaña "Historial de Implementaciones".

Realizando una petición al API

Por último. ¿Cómo probamos que tenemos accesso a nuestra API?

Lo primero que necesitas es la URL para tu API evidentemente.

Tu API ya es pública puedes realizar la petición de la manera que tu gustes, ya sea a través de un lenguaje de programación, utilizando herramientas como cURL o algún cliente como Postman o Insomnia. En mi caso yo estoy utilizando la extensión de VSCode de Thunder Client.

En fin, al hacer la petición te darás cuenta de algo…

Captura de pantalla mostrando la URL a la que se le hace la petición GET pero mostrando como respuesta un error 401: Forbidden. El error tiene el mensaje "Missing Authentication Token".

AWS regresa un mensaje de falta de token autorización. Lo raro es que no configuramos nada al respecto.
Esto se debe a que en realidad cometimos un error muy común a la hora de llamar a la url. Y es tan común que por eso decidí hacerlo parte de esta guía.

Nosotros no creamos un método GET para la URL base. Lo creamos para un recurso llamado sample. Por ende hay que agregar eso al path de nuestra petición.

Ahora sí veremos una respuesta exitosa (200) por parte de nuestra API.

Captura de pantalla mostrando la URL a la que se le hace la petición GET mostrando una respuesta exitosa con código 200.

¡Listo! Tenemos una API funcional creada en API Gateway. Evidentemente no es muy interesante lo que hace ahorita. El siguiente paso será agregarle respuestas y requerimientos más interesantes.