APIs con Ruby
APIs con Ruby
El pasado 13 de mayo tuve una sesión de “streaming” para platicar sobre el desarrollo de APIs REST con Ruby. La plática se dividió en varias secciones dónde se tocaron temas de qué herramientas hay para construir APIs con Ruby, los diferentes estándares para construir APIs, herramientas para documentar, recursos para entender mejor qué es un API y cómo funciona, entre otros temas.
El video ya está disponible para quienes no tuvieron la oportunidad de acompañarme.
Para la siguiente sesión hay que estar pendientes de mi cuenta de Twitter @mario_chavez
Recursos de plática
Para construir APIs con Ruby existen diversas opciones desde Ruby muy básico hasta frameworks completos como Rails.
Rack API
Grape
Hanami
Rails API
Using Rails for API-only Applications - Ruby on Rails Guides
Referencias generales sobre APIs
Antes de aventurarnos a escribir un API realmente tenemos que entender de qué se trata un API y cuál es su relación con estándar HTTP.
Build APIs you won’t hate
El estándar de Open API
JSON API
The ION Hypermedia type
HAL - Hypertext application language
The Hypertext Application Language
Editores
Escribir las especificaciones de un API puede ser una tarea complicada sin ayuda para asegurarnos que la estamos escribiendo de acuerdo al estándar que deseamos adoptar.
Stoplight Studio
Stoplight Studio | OpenAPI Design, Planning & Modeling Tool
Swagger
API Documentation & Design Tools for Teams | Swagger | Swagger
API Blueprint
Keep your API in shape with API Blueprint
Lecciones a seguir
Todos los recursos disponibles ayudan a tener un mejor panorama al momento de crear un API pero no ayudan en lo específico a decidir cómo hacer el API. El siguiente post registra algunas experiencias basadas en el desarrollo de un API que sea estándar y documentando.
Lecciones construyendo un API
Lecciones construyendo un API REST
Implementación en Ruby
Ya conocimos algunas opciones sobre las cuales escribir nuestros APIs ahora toca el tema a herramientas específicas que nos ayudan a seguir un camino estable y documentado al implementar un API.
Serializadores modernos
JSONAPI-RB
Committee
Writing a Hypermedia API client with Ruby
Writing a Hypermedia API client in Ruby
Faster JSON generation with PostgreSQL
Faster JSON Generation with PostgreSQL
Conditional GET with Rails
ActionController::ConditionalGet
Autentificación
Toda API requiere de algún mecanismo de autentificación. Dependiendo del uso de API vamos a tener dos opciones diferentes.
Token Authentication with Rails
Token Authentication with Rails
JSON Web Token
El elefante blanco en el stream
Todo el material mostrado hasta este punto habla específicamente desde el punto de vistas de APIs REST y de la idea de Phil Sturgeon de que realmente no conocemos REST aunque alguno de nostros juremos que hemos implementado APIs REST. Es por eso que existe GraphQL, el cuál es una serie de “hacks” para crear APIs “más flexibles” a costa de ignorar el estándar HTTP.
GraphQL
Conclusiones
Para poder lograr un API exitosa y de la cuál no nos arrepintamos más adelante es necesario conocer qué es REST a fondo, basarnos en elguno de los estándares disponibles y sobre todo que sea un API totalmente documentada. Todos los recursos aquí mostrados ayudan a tener una idea más clara pero siempre es importante buscar inspiración en lo que otros hacen.
Busca en los servicios que consumes en tus aplicaciones cómo está documentada el API de los mismos, qué cosas son las que te agradan de esa implementación y qué las que te desagradan, trata de seguir los pasos de esas APIs que te inspiran.