REST es un tipo de arquitectura para el desarrollo de proyectos web. Principalmente, los principios que componen esta arquitectura son los siguientes:
Recursos identificables
Los recursos en una aplicación web REST, tienen un identificador persistente, es decir, que no cambia con el tiempo. Usualmente este identificador es una URI, como por ejemplo: http://codigofacilito.com/cursos/javascript-profesional identifica el curso de JavaScript.
Recursos manipulables con verbos Http.
REST propone que los recursos sean manipulados usando los verbos estándar que forman parte del protocolo HTTP, los usados son los siguientes: GET, POST, PUT, PATCH y DELETE.
GET, por su parte, debe ser usado para leer recursos, y debe ser idempotente, lo que significa que si realizas la misma acción muchas veces, el resultado es el mismo.
Lo importante del párrafo anterior, es entender que GET no modifica, crea o altera los recursos que se almacenan en el servidor web, ya que rompería la propiedad de idempotencia.
Los verbos HTTP se usan de la siguiente manera:
POST: Sirve para crear nuevos recursos, por ejemplo POST /cursos crea un nuevo curso en la colección de cursos.
GET: Sirve para lectura de recursos, por ejemplo GET /cursos lee la colección de cursos.
PUT: Sirve para actualizar recursos, por ejemplo PUT /cursos/javascript-profesional actualizaría el curso de JavaScript Profesional con los datos indicados.
DELETE: Sirve para eliminar recursos, por ejemplo DELETE /cursos/javascript-profesional eliminaría el recurso indicado.
La ventaja de usar verbos HTTP es que son un estándar, lo que permite desarrollar servicios que recibirán comunicación de otros programas, sin que de ante mano estos sepan cómo deben comunicarse.
Los recursos se representan de distintas maneras.
Un recurso puede ser representado por un archivo HTML, por una estructura JSON, una estructura XML, un PDF, etc.
La representación depende de la petición, por ejemplo GET /cursos/javascript-profesional.json nos entrega la representación en JSON, mientras que GET /cursos/javascript-profesional entrega la versión en HTML.
Los recursos conservan su propio estado
Una de las principales características de un programa REST, es que no tiene un estado. En desarrollo web, el estado puede ser guardado usando sesiones, las sesiones en un servicio web REST no existen.
Usualmente es el cliente el que conserva el estado y lo envía en cada petición.
Este es el trasfondo del funcionamiento de la autenticación con tokens, misma que cubriremos más adelante en el curso.
Para saber más. Existen algunas otras características de una arquitectura REST, sin embargo, no las cubriremos para el propósito de este curso, si quieres saber más, te dejo algunos links interesantes:
http://web.archive.org/web/20130116005443/http://tomayko.com/writings/rest-to-my-wife
https://stackoverflow.com/questions/671118/what-exactly-is-restful-programming
-
Módulo 1 | 7 clases
Introducción
expand_more-
play_circle_outline
Clase 1
1.- Introducción al proyecto del curso
-
play_circle_outline
Clase 2
Requisitos previos para tomar este curso
-
play_circle_outline
Clase 3
Qué cubriremos en este curso
-
play_circle_outline
Clase 4
Descripción del proyecto
-
play_circle_outline
Clase 5
Configurar entorno de trabajo (Windows)
-
play_circle_outline
Clase 6
Configurar entorno de trabajo (MacOS)
-
play_circle_outline
Clase 7
Crea tu primer servidor web
-
-
Módulo 2 | 6 clases
Conceptos Fundamentales
expand_more-
play_circle_outline
Clase 1
Cómo funciona un servidor web.
-
play_circle_outline
Clase 2
Servidor de archivos estáticos
-
play_circle_outline
Clase 3
Enviar JSON
-
play_circle_outline
Clase 4
JSON Viewer para Chrome
-
play_circle_outline
Clase 5
Nodemon para recargar el servidor
-
play_circle_outline
Clase 6
Rutas POST y Postman
-
-
Módulo 3 | 10 clases
Bases de Datos y CRUDs
expand_more-
play_circle_outline
Clase 1
Generar app con Express
-
play_circle_outline
Clase 2
Recorridode una app generada por el Express Generator
-
play_circle_outline
Clase 3
Configurar la base de datos
-
play_circle_outline
Clase 4
Modelos en Mongoose
-
play_arrow
Clase 5
REST y Verbos HTTP
-
play_circle_outline
Clase 6
Crear lugares
-
play_circle_outline
Clase 7
Mostrar lugares
-
play_circle_outline
Clase 8
Mostrar un lugar
-
play_circle_outline
Clase 9
Actualizar lugar
-
play_circle_outline
Clase 10
Eliminar lugares
-
-
Módulo 4 | 15 clases
Más allá de lo básico
expand_more-
play_circle_outline
Clase 1
Crear rutas
-
play_circle_outline
Clase 2
Controladores
-
play_circle_outline
Clase 3
Paginación
-
play_circle_outline
Clase 4
Qué es un Middleware en Express
-
play_circle_outline
Clase 5
Middleware para búsqueda individual
-
play_circle_outline
Clase 6
Configurar cloudinary
-
play_circle_outline
Clase 7
Definir archivo con secretos
-
play_circle_outline
Clase 8
Subir imágenes a cloud
-
play_circle_outline
Clase 9
Subir imágenes pt 2
-
play_circle_outline
Clase 10
Mover imágenes a la nube
-
play_circle_outline
Clase 11
Guardar información de las imágenes en la base de datos
-
play_circle_outline
Clase 12
Generar SEO URLs
-
play_circle_outline
Clase 13
Evitar colisiones con las SEO URls
-
play_circle_outline
Clase 14
Cambiar búsqueda de ID a Slug
-
play_circle_outline
Clase 15
Manejo de parámetros
-
-
Módulo 5 | 6 clases
Autenticación de usuarios
expand_more-
play_circle_outline
Clase 1
Modelo de usuarios
-
play_circle_outline
Clase 2
Encriptar contraseñas con bcrypt
-
play_circle_outline
Clase 3
Crear usuarios
-
play_circle_outline
Clase 4
Generar Json Web Tokens
-
play_circle_outline
Clase 5
Iniciar sesión
-
play_circle_outline
Clase 6
Asignar al primer usuario permisos de administrador
-
-
Módulo 6 | 5 clases
Relaciones básicas uno a muchos
expand_more-
play_circle_outline
Clase 1
Agregar campo usuario a un lugar
-
play_circle_outline
Clase 2
Proteger rutas con autenticación
-
play_circle_outline
Clase 3
Crear lugares con un usuario
-
play_circle_outline
Clase 4
Virtuales para obtener los lugares que creé
-
play_circle_outline
Clase 5
Proteger rutas para usuarios propietarios
-
-
Módulo 7 | 9 clases
Relaciones muchos a muchos
expand_more-
play_circle_outline
Clase 1
Crear modelo Favoritos
-
play_circle_outline
Clase 2
CRUD Favoritos
-
play_circle_outline
Clase 3
Virtuales para relaciones muchos a muchos
-
play_circle_outline
Clase 4
Crear modelo de Visitas
-
play_circle_outline
Clase 5
Enums
-
play_circle_outline
Clase 6
CRUD de Visitas
-
play_circle_outline
Clase 7
Visitas a través de negocios
-
play_circle_outline
Clase 8
Visitas de un negocio
-
play_circle_outline
Clase 9
Visitas de un usuario
-
-
Módulo 8 | 11 clases
Seguridad en servicios web
expand_more-
play_circle_outline
Clase 1
Modelo Aplicaciones (Clientes)
-
play_circle_outline
Clase 2
Asignar valores random a secret y applicationId
-
play_circle_outline
Clase 3
Crear aplicaciones
-
play_circle_outline
Clase 4
Eliminar aplicaciones
-
play_circle_outline
Clase 5
Rutas exclusivas de administradores
-
play_circle_outline
Clase 6
Proteger rutas con secretos
-
play_circle_outline
Clase 7
Preflight en CORs
-
play_circle_outline
Clase 8
Proteger rutas con ApplicationId
-
play_circle_outline
Clase 9
Encabezados para CORs
-
play_circle_outline
Clase 10
Dominios enlazados para una aplicación
-
play_circle_outline
Clase 11
Proteger de dominios no autorizados
-