Swift de lado servidor con Vapor 3
4.9 (32 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
91 students enrolled

Swift de lado servidor con Vapor 3

Swift Server Side
4.9 (32 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
91 students enrolled
Last updated 4/2020
Spanish
Spanish [Auto]
Price: $79.99
30-Day Money-Back Guarantee
This course includes
  • 11 hours on-demand video
  • 3 downloadable resources
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
Training 5 or more people?

Get your team access to 4,000+ top Udemy courses anytime, anywhere.

Try Udemy for Business
What you'll learn
  • Construir una API de lado servidor con Swift
  • Usar Vapor 3, la librería open source de lado servidor en Swift más popular y con mayor soporte de la comunidad open source
  • Crear todo el ciclo de producción de un lado servidor con bases de datos PostgreSQL y desplegar
  • Seguridad, cifrado y autenticación en servidor y en lado cliente
  • Convertirse en un full stack developer usando un mismo lenguaje: Swift
Course content
Expand all 52 lectures 10:50:14
+ Presentación del Curso
1 lecture 04:16

Aprende a construir tu API de lado servidor (server-side) con Swift y usando la librería Vapor, la más popular y con más apoyo de la comunidad open source. Conviértete en un auténtico full-stack developer usando el mismo lenguaje en la parte cliente (frontend) y el desarrollo en servidor (backend). Despliega tus apps en cualquier servicio como Heroku, AWS, Azure o tu propio servidor Linux, cumpliendo todos los estándares. Apúntate ya.

Preview 04:16
+ Inicio del Curso
1 lecture 04:21

Gracias por comprar nuestro curso “Swift de lado servidor con Vapor”. Prepárate porque vas a dar una evolución de tu carrera profesional hacia un verdadero Full Stack. ¿Por qué? Porque en el momento que tenemos una experiencia de desarrollo sostenida con un ingrediente común, el lenguaje, ya solo tenemos que aprender las formas o peculiaridades de diferentes librerías. Nada más. Y al igual que en tus desarrollos para apps móviles (de frontend) usas librerías tanto de Apple como de terceros y aprendes a usarlas sin problema porque usan el mismo lenguaje de programación, aquí te pasará lo mismo.

Estamos seguros que aprenderás a usar Vapor, la librería con mayor futuro y proyección del panorama de lado servidor en Swift, de una forma fácil y sencilla.

Y si tienes cualquier duda, no dudes en poner preguntas en cualquier lección o enviarnos un mensaje que contestaremos lo antes posible.

Gracias por tu confianza y bienvenido a tu "Server Side".

Presentación
04:21
+ Introducción a Swift en lado servidor
4 lectures 46:53

¿Qué es un lado servidor?

  • ¿Qué es una API de servidor o una app de lado servidor?

  • Bases de datos y persistencia

1.1.- ¿Qué es un lado servidor?
07:10

Swift en lado servidor

  • Swift, un lenguaje de propósito general.

  • Antecedentes, código interpretado o en VM software

  • Swift, la web se acerca a la programación tradicional

  • Swift, código compilado e integrado con estándares

Preview 12:39

Así funciona un lado servidor

  • Servicios web, SOAP y REST

  • Petición de datos, método GET

  • Petición de datos, método POST

  • Métodos alternativos

  • Estados HTTP, la respuesta

  • Esquema de una petición y una respuesta

1.3.- Así funciona un lado servidor
15:29

SwiftNIO, procesos asíncronos en red

  • De lo síncrono a lo asíncrono

  • Paradigma síncrono (así se funciona hoy día)

  • Paradigma asíncrono (conducido por eventos)

  • Arquitectura de una librería de red conducida a eventos

  • SwiftNIO 2.0

1.4.- SwiftNIO, procesos asíncronos en red
11:35
+ 2.- Introducción a Vapor
5 lectures 43:54

Vapor, librería funcional de lado servidor

  • Librería web con capa funcional en Swift

  • Funciones actuales y roadmap

2.1.- Vapor, librería funcional de lado servidor
08:52

Pre-requisitos

  • Comprobando las Command Line Tools

  • Sobre las versiones de Xcode, Swift y su compatibilidad

  • Instalando Homebrew

  • Comprobando que nuestra instalación es compatible con Vapor

2.2.- Pre-requisitos para instalar Vapor en macOS
06:56

Instalar Vapor Toolbox

  • Instalando Vapor ToolBox

  • ¿Qué es la Toolbox y qué es la librería de por sí?

2.3.- Instalar Vapor en macOS con Xcode
04:25

Creando un nuevo proyecto

  • Creando el proyecto por defecto

  • Tipos de plantillas para poder utilizar

  • Revisando la estructura del proyecto

  • Arrancando el servidor por primera vez

2.4.- Creando un nuevo proyecto
12:49

Revisando la estructura

  • Las partes esenciales del proyecto Vapor

  • Base de datos y migraciones

  • Enrutamientos

  • Limpiando la plantilla


2.5.- Revisando la estructura
10:52
+ 3.- La estructura de Vapor
6 lectures 01:05:40
3.1.- Estructura de una petición
11:40

Usando parámetros como URL

  • Concepto de enrutamiento dinámico

  • Captura de los parámetros de la URL

  • Probando la implementación

3.2.- Usando parámetros como URLs
09:09

Parámetros en línea

  • Concepto de parámetros en línea

  • Consulta de la petición

  • Devolviendo errores con el método Abort

  • Probando la implementación

3.3.- Parámetros en línea
11:04

JSON de entrada, de salida y Postman

  • El método POST

  • Creando JSON desde el tipo Content

  • Devolviendo JSON

  • Instalando Postman y aprendiendo a usarlo

  • Probando el método POST

Preview 13:18

Métodos PUT, DELETE y otros

  • Método DELETE

  • Los diferentes métodos PUT

  • El método ON genérico para cualquier método

3.5.- Métodos PUT, DELETE y otros
04:26

Colecciones de routes

  • Creando una colección

  • Traspasando nuestras pruebas para que respondan como colección en un controlador

  • Convirtiendo closures en funciones para organizar

  • Probando las llamadas desde su nueva colección

3.6.- Colecciones de routes
16:03
+ 4.- Introducción a las APIs en Vapor y ciclo CRUD
11 lectures 02:25:26

Futuros y promesas

  • Llamadas bloqueantes en la CPU

  • ¿Qué es un futuro?

  • ¿Qué es una promesa?

  • La promesa es el contenedor de un futuro

  • Cualquier operación asíncrona es un futuro contenido en una promesa

  • Uso de flatmap y map en el proceso de los futuros

4.1.- Futuros y promesas
16:17

Fluent, ORM de base de datos

  • Mapeado relacional de objetos

  • Cómo funciona Fluent para crear una tabla o entidad

4.2.- Fluent, ORM de base de datos
08:43

Creando una tabla

  • Creando un fichero para la nueva tabla en nuestro modelo

  • Conformando a los tipos necesarios para ser usados en base de datos

  • Incorporando la tabla a la migración

  • Conformando al tipo migración

4.3.- Creando una tabla
15:51

Creando un dato desde la API

  • Creando el controlador para la tabla Users

  • Creando la RouteCollection

  • Función de creación de un usuario

  • Creación de la operación POST

  • Validando la implementación

4.4.- Creando un dato desde la API
14:07

Consultando uno o varios registros

  • Creando una consulta que devuelve un array con todos los registros de una tabla

  • Filtrando por un dato concreto con parámetros dinámicos por URL

  • Probando la implementación

4.5.- Consultando uno o varios registros
10:59

Consulta personalizada a través de un JSON

  • Creando un JSON para consulta

  • Filtrando una consulta a través de un predicado

  • Trabajando con opcionales en un futuro

  • Probando la consulta

4.6.- Consulta personalizada a través de un JSON
16:07

Consulta personalizada con parámetros GET

  • Recuperando el parámetro del GET

  • Aplicando a la consulta anterior (magia copy+paste)

  • Comprobando la implementación

4.7.- Consulta personalizada con parámetros GET
05:20

Actualizando un dato no clave

  • Crear el struct para actualizar

  • Una función que actualiza

  • Accediendo al resultado del futuro con flatMap y map

  • Actualizando el dato con el método PUT

  • Probando la implementación

4.8.- Actualizando desde un dato no clave
13:17

Actualizando un dato por parámetros en linea

  • Accediendo al futuro de la llamada por parámetros

  • Accediendo al futuro del contenido enviado

  • Procesando dos futuros a la vez

  • Actualizando el dato con la ayuda de dos fuentes diferentes

  • Probando que todo funciona

4.9.- Actualizando con índices y 2 futuros a la vez
11:16

Borrando un dato y transformando las respuestas a estados HTTP

  • Borrado tal cual. No hay confirmación.

  • El método DELETE

  • Transformar un futuro en un tipo de estado HTTP

  • Probando la implementación

  • Borrando desde una consulta de predicado

  • Borrando desde una consulta de parámetros GET

  • Borrando sin acceder al futuro directamente

4.10.- Borrando un dato y transformando las respuestas a estados HTTP
17:15

Probando el ciclo CRUD desde una app iOS

  • Presentando la app frontend en iOS

  • Cómo usar los mismos tipos de datos en ambos proyectos

  • Repasando la conexión de red

  • Probando la app

4.11.- Probando el ciclo CRUD desde una app iOS
16:14
+ 5.- Modelos relacionales en base de datos
10 lectures 02:01:11

Persistiendo a disco y usando DB Browser for SQLite

  • Cambiando la base de datos de memoria a disco

  • Instalando DB Browser for SQLite para consultar la base de datos

  • Probando

5.1.- Persistiendo a disco y DB Browse for SQLite
07:33

Cambiando el índice a un UUID

  • Cambiando protocolos

  • Probando a crear un nuevo registro con UUID

  • Consulta con parámetros de URL con el nuevo ID

5.2.- Cambiando el índice a un UUID
07:42

Creando una tabla hija

  • Creando una tabla GAMES, hija de USERS

  • Incluir el campo del ID del padre como dato del hijo

  • Relación de hijo a padre

  • Relación de padre a hijo (inversa)

5.3.- Creando una tabla hija
13:03

Creando registros hijos

  • Generando el controlador para los registros hijos

  • Crear un nuevo registro hijo con el ID de la tabla padre

  • Crear un nuevo registro hijo con un dato secundario del padre

5.4.- Creando registros hijos
16:22

Consultas anidadas de padres a hijos

  • Consultando todos los juegos de un usuario a través de la propiedad hija

  • Consultando un solo juego de un usuario concreto

  • Probando

5.5.- Consultas anidadas de padres a hijos
15:00

Actualizando registros hijos

  • Re-utilizando consultas

  • Actualizando datos del juego

  • Probando que todo funciona

5.6.- Actualizando registros hijos
08:10

Relaciones de n a n entre tablas (pivotes)

  • Creando una tabla para relación de n a n

  • Tablas pivotes y sus typealias

  • Viendo la estructura de la tabla creada

5.7.- Relaciones de n a n entre tablas (pivotes)
14:54

Creando datos para pivotes

  • Creando películas

  • Creando el pívot a partir de una doble consulta

  • Probando la creación

5.8.- Creando datos para pivotes
17:14

Consultas a través de pivotes y case insensitive

  • Creando la consulta

  • Cargando los datos de películas y pivotes para probar la consulta

  • Modificando las consultas para insensibilidad de mayúsculas y minúsculas

  • Probando

5.9.- Consultas a través de pivotes y case insensitive
11:26

Filtrando, agrupando y ordenando consultas

  • Operaciones AND y OR agrupadas

  • Filtros con rango

  • Ordenación por campos

  • Ordenar de forma ascendente y descendente

5.10.- Filtrando, agrupando y ordenando consultas
09:47
+ 6.- Usando un modelo con PostgreSQL
4 lectures 01:00:52
6.1.- Instalando PostgreSQL con Docker
10:04

Configurando el proyecto para usar otra base de datos

  • Cambiando y actualizando las dependencias del proyecto

  • Reconfigurando los tipos en el proyecto

  • Instalando pgAdmin para monitorizar la base de datos

6.2.- Arrancando y configurando el contenedor de base de datos local con Docker
15:46

Configurando el contenedor de base de datos local con Docker

  • Levantando el contenedor de base de datos

  • Se borran los datos

  • Cómo funcionan los contenedores Docker por defecto

  • Nuevo comando de arranque

  • Comprobando que ahora no se borran los datos

  • Creando un fichero .sh para facilitar el arranque

6.3.- Configurando el proyecto para usar otra base de datos
15:28

Modificando un modelo de datos ya existente

  • Creando un campo en una tabla ya existente

  • Cómo borrar un campo

  • Apunte de Swift 5

  • Probando y repasando

  • Migración de datos o limpieza

6.4.- Migraciones en los modelos
19:34
+ 7.- Autenticación básica y OAuth 2
5 lectures 01:24:29

Instalando las librerías de autenticación y adaptando la app

  • Instalando el paquete Authentication

  • Actualizando Vapor

  • Añadiendo el campo “password” a la tabla

  • Creando versiones públicas de una tabla (con datos restringidos)

  • Adaptando el controlador a la versión pública de Users sin el campo “password”

7.1.- Instalando las librerías de autenticación y adaptando la app
17:08

Autenticación básica

  • Añadiendo extensiones de autenticación a la tabla (¿qué campos usas?)

  • Creando los middlewares de autenticación y protección

  • Controlando el acceso a funciones mediante autenticación

  • Registro del servicio de autenticación en la app

  • Guardando la clave cifrada con HASH en la base de datos

  • Probando la autenticación

7.2.- Autenticación básica
21:00

Generando y validando tokens de sesión OAuth2

  • Creando una tabla para tokens

  • Creando la generación del token de forma criptográfica

  • Modificando la tabla de usuarios para usar el token

  • Usando la autenticación básica para devolver un token

7.3.- Generando y validando tokens de sesión OAuth2
19:18

Implementando OAuth2 en los métodos CRUD

  • Comprobando la generación de los tokens

  • Creando el middleware para autenticación

  • Cambiando el grupo de las funciones CRUD

  • Probando la autenticación en las funciones

7.4.- Implementando OAuth2 en los métodos CRUD
09:29

Ciclo de vida de los tokens

  • Creando una función de logout del servidor

  • Re-generando tokens desde el login

  • Recordando flatMap vs map

  • Probando

  • Re-generando un token para una sesión

  • Comprobando la re-generación

7.5.- Re-generando y borrando tokens
17:34
+ 8.- Seguridad y cifrado
2 lectures 39:42

Recibiendo información cifrada en la API, AES256-GCM

  • Explicando qué vamos a hacer exactamente

  • Longitudes de claves

  • Creando el controlador para la prueba

  • Recuperando, descifrando, desserializando y consultando

  • Repaso final

8.1.- Recibiendo información cifrada en la API, AES256-GCM
17:46

Cliente con AES256-GCM

  • Bajando e instalado la librería CryptoSwift (sin Cocoapods y en un Playground)

  • Creando los tipos de datos y valores necesarios

  • Creando la llamada de red genérica

  • Construyendo la llamada cifrada

  • Modificando la respuesta a la versión pública

  • Resolviendo un error extraño: cada try con su do en su ámbito

  • Repasando antes de probar

  • Probando (ahora sí, por fin)

8.2.- Cliente con AES256-GCM
21:56
Requirements
  • Conocer Swift 4 o superior a nivel intermedio
  • Si has superado el curso "Aprendiendo Swift" en Udemy estás listo para este paso
Description

Aprende a construir tu API de lado servidor (server-side) con Swift, usando la librería Vapor, la más popular y con más apoyo de la comunidad open source. Conviértete en un auténtico full-stack developer usando el mismo lenguaje en la parte cliente (frontend) y el desarrollo en servidor (backend). Despliega tus apps en cualquier servicio como Heroku, AWS, Azure o tu propio servidor Linux, cumpliendo todos los estándares. Apúntate ya.

---------

Si hay algo que está claro en los últimos años es que el desarrollo móvil es uno de los pilares de la tecnología y los servicios hoy día. Pero también sabemos que llevar toda la información solo en el móvil o tableta no es una solución práctica. Queremos servicios que sepan quiénes somos, que tengan nuestros datos en la nube para acceder a ellos desde cualquier parte, que nos permitan incluso en juegos comenzar una partida en el teléfono y acabarla en la tableta.

Vivimos en una época definida por el desarrollo continuado: ya no hay una versión final de una app o un juego, hay una evolución y constantes actualizaciones que mejoran funciones y corrigen errores, incorporando nuevas a cada paso. Y para todo ello, necesitamos conocer qué hacen nuestros usuarios en nuestras apps, sus hábitos, problemas con la misma, opciones favoritas, tiempo de uso… respetando su privacidad, todos esos son datos imprescindibles que estando solo en el dispositivo de cada usuario no sirven para nada.

Por esto, hoy día ya no se entiende una app como un elemento único: esta ha de tener lo que conocemos como un lado servidor. Una API, una app en la nube, un servicio web que, conectado a un servidor de base de datos potente, me permita registrar y realizar procesos que enriquezcan la experiencia de mis usuarios y me proporcionen más y mejor información sobre cómo usan mis servicios para poder mejorarlos en consecuencia.

El problema es que si queremos hacer una API de lado servidor, tenemos que aprender otros lenguajes de programación que no son los que usamos para desarrollar las apps: como Python o Javascript. Pero eso ya no es necesario porque Swift, como lenguaje de propósito general, tiene soporte más allá de iOS. Swift, desde su lanzamiento como código abierto a finales de 2015, ha ido evolucionando y adaptándose hasta llegar al estado actual en que ya es un lenguaje competitivo que permite desarrollos de lado servidor en Linux.

Ya existen librerías maduras que podemos usar en entornos de producción real para este tipo de desarrollos y aquí vamos a enseñarte a programar la librería de código abierto más popular del momento, la que cuenta con más apoyos de la comunidad open source, y que forma parte del grupo de trabajo del lenguaje Swift en Apple, para desarrollos de lado servidor: Vapor.

Conviértete en un auténtico Full Stack: la persona que domina varias arquitecturas de desarrollo, pero bien: usando un mismo lenguaje. Domina el front y el back. Porque al igual que en tu trabajo del día a día usas librerías de Apple o de terceros y las aprendes a manejar fácilmente porque son en Swift, aquí aprenderás una nueva librería que te ayudará a crear nuevas apps con nueva arquitectura: de lado servidor.

Aprenderás qué es Vapor, cuáles son sus características qué lo hacen diferente al resto o cómo gestiona los procesos. Te enseñaremos a construir, por ejemplos, una app de lado servidor, desde la instalación de Vapor hasta su despliegue en producción en un servidor. Cada paso desde el inicio al final del ciclo de vida de tu software.

Aprenderás a integrar bases de datos, peticiones de diferentes formas, a construir APIs de lado servidor con autenticación, con cifrado de datos (incluso en tránsito) y a cómo explotar todo esto desde tu app en Swift. Todo siguiendo los actuales estándar de arquitectura, seguridad y construcción de cualquier solución de lado servidor actual, pero en Swift.

Cierra el círculo y apúntate a un curso que te ayudará a completar la parte que le falta a tu app en Swift: el lado servidor. Haciendo uso de la moderna programación funcional, que aquí aprenderás paso a paso con conceptos fundamentales como los futuros y las promesas. Como todos los cursos que hacemos en Apple Coding Academy aprenderás entendiendo cómo se hace.

Bienvenido a tu lado servidor, a tu API RESTful, integrada con bases de datos PostgreSQL o MySQL, con cifrado, OAuth 2.0… aprende desde 0 todo lo necesario para ser experto en desarrollo en la nube y crea tus propias soluciones sin depender de otros equipos o desarrolladores y sin tener que aprender otros lenguajes.

¿A qué esperas? Apúntate ya.

Who this course is for:
  • Desarrolladores en Swift que quieran dar el salto al full stack controlando el backend en el mismo lenguaje en que trabajan
  • Programadores Swift que quieran ir más allá de las apps