fbpx
 

Crea una API para tus apps iOS usando Swift y Vapor

Crea una API para tus apps iOS usando Swift y Vapor

1. Introducción

VaporSeguro que has oido hablar de este framework antes. 

Vapor es un framework web que te permite trabajar con Swift 3 del lado del servidor.

Utilizando Vapor puedes desarrollar aplicaciones web, aplicaciones en la nube o incluso una API completa para tu próxima app.

En el tutorial de esta semana vamos a utilizar Vapor para realizar una demostración de como crear fácilmente una API para tus aplicaciones iOS.

Por supuesto, Vapor no es único en su clase.

Existen otros frameworks web que puedes utilizar para desarrollar el backend de tus aplicaciones.

Algunos ejemplos son:

Zewo

Zewo se trata del framework en Swift con una arquitectura más interesante de los que vamos a mencionar aquí. Cuenta con un diseño modular compuesto por más de 50 paquetes diferentes. Puedes ampliar información sobre Zewo en su página web.

Kitura

Kitura es un proyecto apoyado por IBM. Como bien sabes, Big Blue está invirtiendo una gran cantidad de recursos con el objetivo de hacer que Swift se convierta en un lenguaje importante también en la parte de backend. Puedes acceder a su web desde aquí.

Perfect

Perfect es el framework en Swift que más éxito ha tenido por ahora en GitHub. Fue diseñado por Kyle Jessup y puedes echarle un vistazo directamente en su sitio web.

Como ves, existen alternativas muy válidas. Sin embargo nosotros en este tutorial nos vamos a centrar únicamente en Vapor.

2. ¿Por qué Vapor?

Tal vez te preguntes por qué deberías comenzar tu aventura con Swift del lado del servidor utilizando Vapor y no cualquier otro framework de los que hemos visto en el punto anterior.

Para mi el principal motivo es debido a que dispone de la mejor documentación de todos los frameworks que hemos mencionado.

Además de esto, puede ver que su repositorio en gitHub tiene muchísimo éxito.

Por esto y sobre todo por la calidad de su documentación, Vapor es uno de los mejores frameworks que puedes utilizar como punto de entrada para cualquiera que quiera aprender Swift del lado del servidor.

3. ¿Qué vamos a ver en este Tutorial?

Estos son los puntos más importantes que veremos en el tutorial de esta semana:

  • ¿Qué necesitas para poder trabajar con Vapor?
  • Procedimiento paso a paso de como instalar todo lo necesario
  • Veremos como crear un proyecto en Vapor
  • Entendiendo la estructura de un proyecto en Vapor
  • Creación de una request-response en nuestra API
  • Acceso a nuestra API desde el navegador

Si crees que este tutorial puede ser interesante para ti, sigue leyendo porque ¡comenzamos!

4. ¿Qué necesitas para poder crear tu API con Vapor?

Esto es lo que necesitas para poder desarrollar una API con Vapor en la que puedan apoyarse tus aplicaciones iOS:

  • Xcode 8
  • Swiftenv
  • Swift 3 Snapshot
  • Vapor

No te preocupes si no conoces algunos “ingredientes” de la receta. Vamos a ver paso a paso en que consiste cada una de estas herramientas y los pasos que debes seguir para configurarlas correctamente.

5. Descargando e Instalando Xcode 8

El primer paso debe ser comprobar que versión de Xcode tienes.

Para ello abre Xcode y accede al menú Xcode>Preferences

 

vapor-xcode-version-1

 

Si tienes instalada la versión 8 o superior no debes hacer nada más.

 

vapor-xcode-version-2

 

En el caso de que tu versión sea inferior a la 8 o que ni siquiera tengas instalado Xcode, puedes descargarlo directamente desde aquí.

Tendrás que introducir tu ID de Apple para poder acceder a la página de descarga.
vapor-xcode-download-3

6. Instalando y Configurando Swiftenv

Descargando Swiftenv

El siguiente paso que tendremos que dar será instalar Swiftenv.

Swiftenv es un gestor de versiones de Swift. Te permite instalar y cambiar facilmente entre diferentes versiones de Swift.

Para instalar Swiftenv tendrás que clonar su repositorio de GitHub ejecutando el siguiente comando desde el terminal:

Así que abre una ventana del terminal, copia ese comando y pulsa intro.

Lo que acabamos de hacer es crear un repositorio en tu carpeta de usuario, donde se ha clonado el contenido del repositorio de Swiftenv.

Configurando la variable de entorno PATH

El siguiente paso será configurar la variable de entorno PATH de nuestro ordenador para que enlace directamente con Swiftenv. Para ello, tendrás que abrir tu bash profile, escribiendo el siguiente comando en tu terminal:

En caso de que no hayas trabajado antes con la variable de entorno PATH, el fichero .bash_profile no existirá en tu sistema. Por tanto, si después de introducir el anterior comando no ha sucedido nada, quiere decir que tienes que crear este fichero. Para crear el fichero .bash_profile teclea este comando en tu terminal:

[caja-roja]Si utilizas Zsh, en lugar de touch ~/.bash_profile tendrás que teclear source ~/.bash_profile. Gracias a Lito por su aporte en la sección de comentarios.[/caja-roja]

Al ejecutar este comando, se abrirá el editor de texto de tu mac con el contenido del .bash_profile.

Como hemos dicho antes, si nunca has editado este fichero, ahora mismo no contendrá nada pero si has trabajado con él con anterioridad, aquí aparecerán algunas lineas de código que has utilizado para configurar otras aplicaciones.

vapor-bash_profile-before-4

En mi caso como puedes ver, el fichero .bash_profile ya cuenta con una linea de texto.

No elimines ninguna linea de este fichero. Simplemente añade lo siguiente:

En mi caso, este sería el aspecto del fichero después de añadir estas lineas:

vapor-bash_profile-after-5

Guarda el contenido del fichero (cmd + S) y reinicia el terminal.

Comprobando que Swiftenv se ha instalado correctamente

Al volver a abrir el terminal escribe el siguiente comando para comprobar que hemos Swiftenv perfectamente:

Si has seguido los pasos que hemos visto, el terminal debería devolverte la versión de Swiftenv que se ha instalado en tu mac.

vapor-swiftenv-installed-6Perfecto, continuemos con el siguiente punto.

7. Descargando Swift 3 Snapshot

Ahora que ya hemos instalado Swiftenv, tendremos que descargar Swift 3 Snapshot.

Swift 3 Snapshot no es mas que un paquete que contiene el lenguaje Swift listo para ser instalado.

Lanza el siguiente comando en tu terminal para instalarlo:

La descarga desde el terminal comenzará justo después. Puede que tarde algunos minutos en descargarlo completamente, así que ten paciencia. Al terminar de descargarlo te pedirá tu contraseña de Administrador para realizar la instalación y al finalizar el terminal te informará que ha realizado la instalación correctamente:

vapor-installed-swift3-snapshot-7El último paso de este apartado será establecer esta versión de Swift como la versión principal desde el terminal. Ejecuta el siguiente comando desde el terminal:

Comprueba que DEVELOPMENT-SNAPSHOT-2016-09-06-a se ha configurado como versión principal escribiendo el siguiente comando en el terminal:

Obtendrás por pantalla esto:

Esto nos indica que hemos seguido todos los pasos correctamente.

8. Comprobando compatibilidad de Vapor

Antes de instalar Vapor es recomendable comprobar que todo en nuestro sistema está correctamente configurado para poder instalar este framework.

Para ello, el propio Vapor ofrece un script que realiza las comprobaciones necesarias y determina si cumplimos todos los requisitos para poder trabajar con Vapor.

Para ello escribe el siguiente comando:

Si después de teclear esto, tu terminal muestra el check de color verde, es que todo está configurado perfectamente para poder instalar Vapor.

vapor-all-right-to-install-vapor-8

10. Instalando Vapor

Este es el último paso de los requisitos que hemos comentado. La descarga e instalación de Vapor.

El comando que debes de utilizar es este:

Tardará algunos minutos en descargar, compilar e instalar Vapor.

vapor-installed-9Para comprobar que Vapor se ha instalado correctamente escribe este comando:

El terminal devolverá una lista de comandos que puedes usar con Vapor:

vapor-command-list-10Una vez llegados hasta este punto, solo me queda felicitarte.

Has configurado tu sistema para poder trabajar con Vapor.

Ahora es donde empieza lo realmente interesante. Sigue leyendo.

11. Creando nuestro proyecto en Vapor

Para crear un nuevo proyecto en Vapor debemos de elegir un directorio de nuestro Mac donde queramos crearlo. En mi caso, yo voy a guardar el proyecto en el Escritorio.

También debes decidir el nombre que quieres darle al proyecto. Yo voy a llamarlo VaporAPI.

Abre de nuevo tu terminal y colócate en el directorio en el que quieras crear tu proyecto utilizando para ello el domando cd.

Una vez que estás en el directorio deseado, teclea el siguiente comando:

[caja-gris]Sustituye VaporAPI por el nombre que quieras darle a tu proyecto[/caja-gris]

 

vapor-new-project-11

 

Vapor te mostrará en pantalla su logo junto con el siguiente mensaje:

Project “VaporAPI” has been created. Type ‘cd VaporAPI’ to enter the project directory. Enjoy!

Por tanto, nuestro proyecto se ha creado correctamente.

En el siguiente apartado vamos a echar un vistazo a las tripas del proyecto que acabamos de crear con Vapor.

12. Entendiendo la estructura de un proyecto en Vapor

Echando un vistazo a las tripas de nuestro proyecto

En la ventana de terminal que tienes abierta y que has utilizado para crear el proyecto en Vapor teclea el siguiente comando:

[caja-roja]Recuerda que si has utilizado un nombre diferente a VaporAPI al crear tu proyecto, en este comando tendrás que usar el nombre que le hayas dado[/caja-roja]

Este comando abre el proyecto creado por Vapor en el Finder. De esta forma podremos echarle un vistazo y ver la pinta que tiene nuestro proyecto:

 

directories-in-vapor-project-12

 

Revisando los elementos más importantes

En la imagen puedes ver las carpetas y ficheros que el framework ha creado automáticamente en el directorio que nosotros hemos elegido.

Vamos a explicar únicamente los elementos más importantes que aparecen en este directorio.

Vapor obliga a seguir el patrón de diseño MVC (Model, View, Controller). Por tanto, cada proyecto que creamos, lo divide en diferentes carpetas para cada uno de estos elementos.

Si no tienes experiencia con MVC, puedes aprender todo lo que necesitas para comenzar en este artículo.

Como hemos dicho, Vapor ha creado una carpeta para cada una de las capas del MVC. Si accedes a la ruta Sources > App, verás que ahí aparecen los directorios Controllers y Models.

 

models-and-controllers-in-vapor-13

 

Para localizar la carpeta Views tendrás que acceder al directorio Resources. Verás que ahí está la carpeta Views.

 

views-directory-in-vapor-14

 

Como hemos dicho, Vapor te obliga a ubicar los elementos de tu API utilizando estas carpetas predefinidas. Si por ejemplo, quisiéramos añadir un nuevo controlador a nuestra API, tendríamos que alojarlo en la carpeta Controllers. Lo mismo tendríamos que hacer con Models y Views.

Así son los frameworks. Te ofrecen comodidad, al delegar la mayoría de la configuración de tu software en ellos, pero te exigen seguir unas normas a la hora de trabajar.

Si te fijas, dentro de la carpeta App, también tenemos un fichero llamado main.swift. Este es el fichero principal de nuestra API. Cuando arranquemos el servidor de Vapor, main.swift será lo primero que se ejecute. En el siguiente apartado trabajaremos con él.

Existe en la raiz de nuestro proyecto una carpeta llamada Public. Aquí es donde deberías añadir las imágenes y estilos que quieras utilizar.

El resto de ficheros y carpetas no es necesario que los veamos ahora.

Para empezar es suficiente con lo que hemos visto.

13. Trabajando con main.swit

Hemos dicho que main.swift es el punto de entrada de la aplicación que estamos creando con Vapor.

Cuando arranque nuestra API, main.swift será lo primero que se ejecutará. Ábrelo con Xcode y elimina todo el código que aparezca. Lo que vamos a hacer es sustituirlo por esto:

//1. Lo primero que hacemos es importar el framework Vapor

//2. Después creamos un Droplet y lo almacenamos en la variable drop.

Un Droplet es el corazón de nuestro servidor Vapor. Contiene un conjunto de funciones que serán la columna vertebral de nuestro servidor. También tiene varias propiedades que podemos customizar a nuestro gusto y acepta una gran cantidad de argumentos, los cuales vienen detallados en la Documentación.

//3. Especificamos que cuando alguien acceda al index de nuestra API a través del método GET, lo que haremos será devolver el mensaje “Nuestra API está funcionando“.

//4. Por último iniciaremos el server utilizando la función run().

Una vez que hayas añadido esto a main.swift, guarda los cambios.

Nuestra API está lista para funcionar.

14. Ejecutando nuestra API

Accede al terminal y compila el proyecto. Para ello, debes estar situado en el directorio del proyecto y ejecutar el siguiente comando:

Este comando crea un ejecutable de nuestra aplicación en la ruta .build/debug/ de nuestro proyecto.

Tal vez tarde algunos minutos. Tendrás que esperar hasta que termine.

Cuando haya compilado nuestro proyecto, ya podrás lanzar el servidor de Vapor:

Este comando lo que hace es lanzar el ejecutable que hemos creado en el paso anterior.

Tal vez la primera vez que ejecutes la API, tarde un poco más de lo normal.

Una vez que el servidor esté corriendo deberías ver algo como esto:

vapor-server-running-15Vapor, por defecto, lanza nuestra API en la siguiente URL:Puerto:

Por tanto si queremos acceder a la API para comprobar que funciona correctamente, abriremos Safari/Chrome y escribiremos esa URL.

testing-vapor-url-16Como ves, hace exactamente lo que hemos especificado. Cada vez que recibe una petición HTTP muestra por pantalla el texto “Nuestra API está funcionando“.

Ten en cuenta que cada vez que realices una modificación en el código de la API deberás volver a compilar antes de arrancar el proyecto.

15. Modificando la URL y el Puerto de Vapor

Como has visto, Vapor por defecto, especifica la URL 0.0.0.0  y el Puerto 8080 para lanzar nuestra API. En el caso de que quieras modificar este parámetro, podrías hacerlo accediendo al fichero alojado en Config/servers.json.

 

files-servers-json-17

 

Modificando los parámetros port y host puedes especificar la URL y Puerto que prefieras.

16. Ampliando nuestra API

Ya tenemos funcionando nuestra API. Ahora mismo no hace nada más que mostrar por pantalla el mensaje que has visto. Algo que es bastante pobre hasta para una API de demostración.

Vamos a hacer que se parezca algo mas a una API real.

Vamos a modificar el código para que al acceder al endpoint http://0.0.0.0:8080/users nos devuelva los datos de un usuario de nuestra aplicación.

[caja-gris]Lo normal al acceder a /users sería obtener un listado de usuarios, no un usuario único. Sin embargo, al tratarse de una API de demostración únicamente vamos a devolver los datos de un usuario[/caja-gris]

Vuelve a abrir el fichero main.swift con Xcode y añade el código marcado con //1 y //2:

//1. Aquí lo único que hacemos es añadir el módulo HTTP de Vapor para poder gestionar la respuesta de nuestra API.

//2. Especificamos que cuando un cliente HTTP nos haga un GET a /users, devolveremos un JSON con los datos del usuario.

Tan sencillo como esto. Especificamos la ruta de nuestra API y determinamos cual será su respuesta en formato JSON.

Para poder comprobar si funciona correctamente, desde el terminal haz:

Accede a la URL http://0.0.0.0:8080/users y obtendrás esta respuesta:

 

testing-our-vapor-api-18Con estos datos que obtenemos de nuestra API, podríamos desarrollar una aplicación iOS donde se mostrara en un TableView toda la información del usuario. Este sería el proceso lógico de desarrollo de una app cliente-servidor.

Si te interesa ampliar tus conocimientos sobre las aplicaciones Cliente-Servidor, aquí tienes un tutorial donde desarrollamos una aplicación completa de este tipo.

17. Resumen Final y Conclusiones

Como ves, hemos instalado todo lo necesario para poder trabajar con Vapor de forma local. Hemos creado un proyecto desde cero en Vapor. También hemos explicado brevemente la estructura interna del proyecto. También has visto como crear tu propia API y como poder acceder a través de tu navegador.

Espero que este Tutorial te haya podido servir como introducción de desarrollo de una API utilizando Swift. Como ves, si eres capaz de dominar Swift, además de desarrollar aplicaciones iOS podrás utilizarlo para trabajar también del lado del servidor. Lo que supone una grandísima ventaja para cualquier desarrollador especializado en este lenguaje.

18. Has terminado el Tutorial

Enhorabuena, has terminado el tutorial sobre Vapor. 

Como siempre, aquí tienes el video-chorra de esta semana:

[ejercicio titulo = “Compilación de Virales” num=”1″]

[/ejercicio]

19. ¿Donde ir ahora?

Puedes acceder a más tutoriales disponibles en EfectoApple aquí.

Si este artículo te ha parecido útil, me harías un gran favor compartiéndolo en tus redes sociales.

Como siempre, para cualquier duda, tienes los comentarios a tu disposición.

Recuerda, cada lunes un nuevo Tutorial sobre Desarrollo iOS.

Esto ha sido todo, gracias por leer EfectoApple.

5 Comentarios
  • Lito
    Publicado a las 13:33h, 28 diciembre Responder

    Un apunte, para los que utilizamos .zsh como terminal, para poder instalar Swiftenv hay que ejecutar “source ~/.bash_profile” en lugar de “touch ~/.bash_profile”.

    Gracias por el gran tutorial Luis, podrías ampliarlo con un auth básico? 😛

  • Jatxi
    Publicado a las 13:05h, 08 mayo Responder

    A la hora de comprobar (curl -sL check.vapor.sh | bash) me da error, tengo un macbook pro retina.
    el error es el siguiente:

    bash: line 1: html: No such file or directory
    bash: line 2: syntax error near unexpected token `<'
    'ash: line 2: `301 Moved Permanently

    Un saludo, Gracias

    • Luis R
      Publicado a las 17:05h, 10 mayo Responder

      Hola Jatxi, es probable que la instalación de algunos de los componentes requeridos no se haya realizado correctamente.

      Yo haría la siguiente revisión:

      – Versión de Xcode = 8 o superior
      – Instalación de Swiftenv
      – Variable de entorno PATH está correctamente configurada?
      – Instalación de Swift 3 Snapshot

      Un saludo!

Escribe un comentario

10AppsIpad

Descarga las 10 Aplicaciones

Introduce tu Nombre y tu Email para recibir las Apps en tu Correo

Acabo de enviarte un email. Sigue las instrucciones para descargar las Aplicaciones. Puede que tengas que revisar tu buzón de correo no deseado. Gracias.