Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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.  Promotor del FLOSS  Apasionado del desarrollo web Conferencista

    en formación Estudiante de Bajo Eléctrico Fan: Heavy metal, cerveza, Twitter, Gregory Sallust, Ruby
  2. API

  3. 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.
  4. 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.
  5. o

  6. 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.
  7. Rails 5 nos proveerá la opción de crear aplicaciones de

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

    gem install rails –pre … rails -v => Rails 5.0.0.beta3
  9. 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.
  10. 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.
  11. 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
  12. 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.
  13. 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.
  14. 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
  15. Cacheo: Si usas dirty? Con control publica de cache, Rails

    automaticamente “cacheara” tus respuestas. Tambien puedes configurar facilmente el cache store.
  16. 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.
  17. 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.
  18. Generacion de URLs: El lado complementario a ruteo es la

    generacion de URLs. Una buena API basada en HTTP incluye URLs.
  19. 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?
  20. Autenticacion basica, por digest y por token: Rails viene con

    soporte de fabrica para esos tres tipos de autenticacion HTTP.
  21. 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.
  22. 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.