Mario Alberto Cháve

Blog personal desarrollo de software

desarrollo

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

fnando/rack-api

Grape

ruby-grape/grape

Hanami

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

Build APIs You Won’t Hate

El estándar de Open API

Home - OpenAPI Initiative

JSON API

JSON:API

The ION Hypermedia type

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

API Blueprint | 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

Modern Ruby Serializers

JSONAPI-RB

jsonapi-rb/jsonapi-rb

Committee

interagent/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

jwt/ruby-jwt

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

GraphQL - Welcome

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.

Stripe API

Stripe API

Creditario API

Creditario API