$30 off During Our Annual Pro Sale. View Details »

API first: the Ruby (and rails) way

API first: the Ruby (and rails) way

Fernando Perales

July 07, 2016
Tweet

More Decks by Fernando Perales

Other Decks in Programming

Transcript

  1. API first: the Ruby (and rails) way

  2. Fernando Perales

  3. <me>

  4. Ingeniero de Software MagmaLabs

  5. Ingeniero de Software MagmaLabs ¡Hey! Estamos contratando careers.magmalabs.io

  6.  Promotor del FLOSS  Apasionado del desarrollo web Conferencista

    en formación Estudiante de Bajo Eléctrico Fan: Heavy metal, cerveza, Twitter, Gregory Sallust, Ruby
  7. </me>

  8. None
  9. 3er jueves de cada mes

  10. rubygdl.org

  11. API

  12. Una API expresa los componentes de un software en términos

    de sus operaciones, entradas, salidas y sus tipos, definiendo las funcionalidades de manera independiente a sus implementaciones, lo que permite que las definiciones y su implementación sin comprometer su interfaz. Una buena API hace fácil crear un programa al proveer todos los componentes, los cuales son unidos por el programador.
  13. Web API

  14. Una API web del lado del servidor es una interfaz

    programática que consiste en uno o mas endpoints públicamente expuestos en un sistema de request-response ya definido, típicamente expresado en JSON o XML, que es expuesto via web comúnmente vía HTTP.
  15. By Lubaochuan - Own work, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=34946978

  16. ¿Por qué hacer una web API?

  17. http://www.apiacademy.co/sites/default/files/Web-APIs-v5_0.png

  18. Herramientas populares

  19. Node con ExpressJS Go con Martini Clojure con Compojure ...

    PHP con Laravel
  20. o

  21. Ruby con: Sinatra Grape Padrino Rails

  22. Ruby con: Sinatra Grape Padrino Rails

  23. ¿No es Rails demasiado para hacer una simple API?

  24. R: Si y no

  25. Para APIs muy sencillas, esto puede ser cierto, sin embargo,

    incluso en las aplicaciones muy cargadas del lado de HTML, la mayoría de la lógica de la aplicación reside fuera de las vistas.
  26. Rails 5 nos proveerá la opción de crear aplicaciones de

    Rails especificas para la creación de APIs con Rails::API
  27. gem install rails –pre … rails -v => Rails 5.0.0.beta3

    gem install rails –pre … rails -v => Rails 5.0.0.beta3
  28. rails new app --api

  29. ¿Por qué elegir Ruby (and rails) para hacer nuestra web

    API?
  30. La razón por la que muchos desarrolladores usan Rails es

    que provee varias opciones por default que nos permiten comenzar a trabajar rápidamente sin tener que tomar algunas decisiones triviales.
  31. Algunas de las funcionalidades que vienen en Rails por defecto

    siguen aplicando a Rails::API.
  32. A nivel de middleware

  33. Reloading: Las aplicaciones Rails soportan recarga de manera transparente. Esto

    funciona incluso si tu aplicación crece y reiniciar el server para cada request se vuelve no viable.
  34. Multiples entornos: Rails viene con soporte para varios entornos como

    lo son development, test y production. Estos entornos vienen con configuraciones por defecto que aceleran el desarrollo del producto sin comprometer el desempeño en producción
  35. Logging: Rails registra todas las peticiones con el apropiado nivel

    de verbosidad según el entorno actual. Los logs en development incluyen información sobre la petición, entorno, consultas a la base de datos e información básica de rendimiento.
  36. Seguridad: Rails detecta y previene ataques de IP spoofing y

    maneja firmas criptográficas
  37. Parseo de parametros: ¿Quieres especificar los parametros como JSON en

    ver del formato URL-encoded? Sin problema. Rails decodificara el objeto JSON y lo hara disponible en los parametros. ¿Quieres usar anidamiento en URL-encoded? Tambien funcionara.
  38. GETs condicionales: Rails maneja GETs condicionales (ETag y Last-Modified), procesando

    los encabezados de una peticion y regresando la respuesta indicada junto con el codigo de estatus
  39. Cacheo: Si usas dirty? Con control publica de cache, Rails

    automaticamente “cacheara” tus respuestas. Tambien puedes configurar facilmente el cache store.
  40. Peticiones HEAD: Rails convertira de manera transparente los request de

    tipo HEAD a GET y regresara solo los encabezados. Esto hace que HEAD funcione de manera confiable en todas las APIs creadas con Rails.
  41. A nivel de ActionPack

  42. Rutas RESTful: Si estas construyendo una API RESTful con JSON,

    tal vez quieras usar el sistema de rutas de Rails. Ofrece un limpio y convencional mapeo de HTTP a los controladores sinnifica no tener que que pender el tiempo pensando como modelar tu API en terminos de HTTP.
  43. Generacion de URLs: El lado complementario a ruteo es la

    generacion de URLs. Una buena API basada en HTTP incluye URLs.
  44. Encabezados y respuestas de redireccionamiento: head :no_content y redirect_to user_url(current_user)

    son bastante utiles. Claro, podriamos agregar manualmente los encabezados pero, ¿por qué hacerlo?
  45. Autenticacion basica, por digest y por token: Rails viene con

    soporte de fabrica para esos tres tipos de autenticacion HTTP.
  46. Instrumentación: Desde Rails 3.0 se incluye una API de instrumentación

    para una variedad de eventos como procesamiento, envio de datos o archivos, redireccionamiento y consultas a la base de datos.
  47. Generadores: Puede ser irrelevante para usuarios avanzados, pero es genial

    poder generar un recurso y obtener el modelo, controlador, stubs para pruebas y rutas creadas con un solo comando.
  48. Demo

  49. ¿Preguntas?

  50. ¡Gracias! me@ferperales.net