Escolar Documentos
Profissional Documentos
Cultura Documentos
Formación especializada TI
AJAX
Asynchronous JavaScript And XML
AJAX
es una técnica de desarrollo web para crear aplicaciones interactivas o RIA (Rich Internet Applications).
Estas aplicaciones se ejecutan en el cliente, es decir, en el navegador de los usuarios mientras se
mantiene la comunicación asíncrona con el servidor en segundo plano. De esta forma es posible
realizar cambios sobre las páginas sin necesidad de recargarlas, mejorando la interactividad, velocidad
y usabilidad en las aplicaciones.
Ajax es una tecnología asíncrona, en el sentido de que los datos adicionales se solicitan al servidor y se
cargan en segundo plano sin interferir con la visualización ni el comportamiento de la página, aunque
existe la posibilidad de configurar las peticiones como síncronas de tal forma que la interactividad de la
página se detiene hasta la espera de la respuesta por parte del servidor.
JSON
JavaScript Object Notation
JSON
acrónimo de JavaScript Object Notation, es un formato de texto ligero para el
intercambio de datos. JSON es un subconjunto de la notación literal de objetos
de JavaScript aunque hoy, debido a su amplia adopción como alternativa a XML,
se considera un formato de lenguaje independiente.
.
Json builder
Cuando generamos el scaffold adicionalmente en las vistas nos genero unos
archivos con la extensión jbuilder. Estos básicamente nos ayudan a mostrar el
resultado de nuestras peticiones en Json para que pueden ser consumidas
desde otra aplicación.
Para que por ejemplo podamos consumir los comentarios de una tarea debemos
nuevamente crear el método show, automáticamente cuando se realice una
petición remota(Ajax) el controlador entregara la respuesta en la vista
show.json.jbuilder.
Jbuilder
Si analizamos la vista _comentario.json.jbuilder vemos que usa un método
llamado extract! Que básicamente me analiza el objeto y lo vuelve json, sin
embargo podríamos modificarlo para establecer algun orden especifico o
agregar más campos a nuestro json.
JSON Web Token
(JWT) es un estándar abierto (RFC-7519) basado en JSON para crear un token
que sirva para enviar datos entre aplicaciones o servicios y garantizar que sean
válidos y seguros.
El caso más común de uso de los JWT es para manejar la autenticación en
aplicaciones móviles o web. Para esto cuando el usuario se quiere autenticar
manda sus datos de inicio del sesión al servidor, este genera el JWT y se lo
manda a la aplicación cliente, luego en cada petición el cliente envía este token
que el servidor usa para verificar que el usuario este correctamente autenticado
y saber quien es.
knock
Knock es una solución de autenticación para la aplicación Rails API-only basada
en JSON Web Tokens.
¿Por qué se recomienda?
● Es liviano
● Está diseñado para la aplicación Rails API-only.
● Es sin estado .
● Funciona de la caja con Auth0 .
¿Por qué no un cookie?
Por definición, los API de arquitectura REST no tienen una noción de estado del
cliente, es decir que distintos clientes pueden acceder al API y sus respectivos
estados no tienen injerencia en los procesos internos del API. En el caso de los
cookies, esto no ocurre pues una sesión tiene que ser creada por cada cliente en
el servidor y almacenada en una base de datos. El cliente a su vez debe guardar
la identificación de la sesión para poder comunicarse con el servidor. Los
navegadores se encargan de guardar estas identificaciones. Si los únicos
clientes de un API fuesen los navegadores, esto podría funcionar medianamente
bien a pesar de la carga extra a la base de datos aunque no sería un API REST.
Crear Proyecto API en Rails
Ejecutemos el comando para iniciar una nueva aplicación en Rails en modo API.
Va a crear una nueva aplicación de Rails solo-API llamado mi_api. No olvides que
el soporte para la opción --api fue agregada solo en Rails 5, así que asegúrate de
que tienes esta o una versión más nueva instalada.
Abre el Gemfile y nota que es mucho más pequeño de lo habitual: gemas como
coffee-rails, turbolinks y sass-rails no están.
El archivo config/application.rb contiene una nueva línea:
config.api_only = true
Significa que Rails va a cargar un conjunto más pequeño de intermediario: por ejemplo, no hay soporte
de cookies ni sesiones. Más aún, si tratas de generar un andamio, las vistas y recursos no serán
creados. Actualmente, si revisas el directorio views/layouts, notarás que el archivo application.html.erb
también falta.
Esto es prácticamente todo, esta es la aplicación básica de Rails que has visto muchas veces.
Agregar algunas gemas
# Esta gema nos permite habilita "has_secure_password" en Active Record
gem 'bcrypt', '~> 3.1.7'
# Usamos Active Model Serializers para definir las respuestas del API en JSON
gem 'active_model_serializers', '~> 0.10.0'
Crear entidad
Vamos a hacer un ejemplo muy sencillo simplemente vamos a crear un modelo
User el cual vamos a consultar por medio de nuestra API
rails db:migrate
Knock para autenticar con JWT
Como ya incluimos la gema en un inicio, sólo nos queda usar el generador para
instalar knock en la aplicación: