$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

    View Slide

  2. Fernando
    Perales

    View Slide


  3. View Slide

  4. Ingeniero de Software
    MagmaLabs

    View Slide

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

    View Slide

  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

    View Slide


  7. View Slide

  8. View Slide

  9. 3er jueves de cada mes

    View Slide

  10. rubygdl.org

    View Slide

  11. API

    View Slide

  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.

    View Slide

  13. Web API

    View Slide

  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.

    View Slide

  15. By Lubaochuan - Own work, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=34946978

    View Slide

  16. ¿Por qué hacer una web API?

    View Slide

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

    View Slide

  18. Herramientas populares

    View Slide

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

    View Slide

  20. o

    View Slide

  21. Ruby con:
    Sinatra
    Grape
    Padrino
    Rails

    View Slide

  22. Ruby con:
    Sinatra
    Grape
    Padrino
    Rails

    View Slide

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

    View Slide

  24. R: Si y no

    View Slide

  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.

    View Slide

  26. Rails 5 nos proveerá la opción de
    crear aplicaciones de Rails
    especificas para la creación de APIs
    con Rails::API

    View Slide

  27. gem install rails –pre

    rails -v
    => Rails 5.0.0.beta3
    gem install rails –pre

    rails -v
    => Rails 5.0.0.beta3

    View Slide

  28. rails new app --api

    View Slide

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

    View Slide

  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.

    View Slide

  31. Algunas de las funcionalidades que
    vienen en Rails por defecto siguen
    aplicando a Rails::API.

    View Slide

  32. A nivel de middleware

    View Slide

  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.

    View Slide

  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

    View Slide

  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.

    View Slide

  36. Seguridad:
    Rails detecta y previene ataques de
    IP spoofing y maneja firmas
    criptográficas

    View Slide

  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.

    View Slide

  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

    View Slide

  39. Cacheo:
    Si usas dirty? Con control publica de
    cache, Rails automaticamente
    “cacheara” tus respuestas. Tambien
    puedes configurar facilmente el
    cache store.

    View Slide

  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.

    View Slide

  41. A nivel de ActionPack

    View Slide

  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.

    View Slide

  43. Generacion de URLs: El lado
    complementario a ruteo es la
    generacion de URLs. Una buena
    API basada en HTTP incluye URLs.

    View Slide

  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?

    View Slide

  45. Autenticacion basica, por digest y
    por token:
    Rails viene con soporte de fabrica
    para esos tres tipos de
    autenticacion HTTP.

    View Slide

  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.

    View Slide

  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.

    View Slide

  48. Demo

    View Slide

  49. ¿Preguntas?

    View Slide

  50. ¡Gracias!
    [email protected]

    View Slide