Crear una API con Ruby on Rails 5 !
Que tal! en el presente tutorial veremos como crear un *Api**[^Apis]. Con ROR, utilizaremos la version 5 de el framework en el siguiente tutorial veremos como conectar REACT con esta API.
Antes de continuar es importante que se tenga conocimiento de lo que son las API y SOA Service Oriented Architecture
Primero :¿Que es un API?
un API por sus siglas en ingles Aplicación Programming Interface
SOA: Arquitectura basada en servicios
SOA es una método de diseño de arquitectura de software
Las API’S La interfaz de programación de aplicaciones, abreviada como API del inglés: Application Programming Interface, es un conjunto de subrutinas, funciones y procedimientos (o métodos, en la programación orientada a objetos) que ofrece cierta biblioteca para ser utilizado por otro software como una capa de abstracción.
Comencemos:
Para iniciar lo primero que tenemos que hacer es asegurarnos de que todo este instalado y listo esto no es para principiantes en el ambiente rails si es su caso primero visiten instalación aquí enlaces para cada plataforma:
###WINDOWS: hay 2 rutas la mas fácil y rápida es con RailsInstaller Pero en lo personal no me agrada. La segunda es Vagrant el cual te permite manejar maquinas virtuales de manera rápida y sencilla a parte de combinarlo con Chef para la preinstalación de todos los componentes. Vagrant es increíble permite tener todas las bondades de Linux en windows y con un consumo mínimo de recursos Definitivamente lo recomiendo para los que deseen utilizar windows. otra opción para los usuarios de Windows 10 es el uso de WSL ó WLS2. en otro post explicare mas a detalle este Feature WSL.
Linux:
Recomiendo seguir esta Guía por Go Rails explica excelente el proceso OJO hay que leer a detalle
A lo que truje chencha
para iniciar la aplicación en modo API es necesario correr el siguiente comando
rails new api_app_name --api
nos movemos al directorio que creamos
cd nombre_del_api
bundle install
bin/rake db:setup
#Ahora a hablar de configuramos CORS Cross-Origin Http Request es un estándar que permite realizar request desde varios orígenes http para leer mas del tema aquí un enlace de Mozilla CORS
en esta ocasión veremos CORS en rails y se relazara por la gema rack-cors para usarla hay que habilitarla en el Gemfile
# Use Rack CORS for handling Cross-Origin Resource Sharing (CORS), making cross-origin AJAX possible
gem 'rack-cors'
ahora ingresamos Bundle install
bundle install
ahora nos moveremos a el archivo de configuración config/initializers/cors.rb
una vez dentro verán todo comentado este archivo hay que editarlo pueden usar las configuraciones que están en RackCors Github
la mía se ve de la siguiente manera
Rails.application.config.middleware.insert_before 0, Rack::Cors do
allow do
origins 'example.com'
resource '*',
headers: :any,
methods: [:get, :post, :put, :patch, :delete, :options, :head]
end
end
nota CORS Es recomendado por la W3C
#Serializacion utilizaremos una gema para serializar active_model_serializers para mas información blog serializer agregamos al Gemfile
gem 'active_model_serializers', '~> 0.10.0'
y corremos bundle
bundle install
creamos el archivo config/initializers/active_model_serializers.rb
y escribimos lo siguiente
ActiveModel::Serializer.config.adapter = :json_api
#Versionar Veremos Como versionar las api en ruby se pueden usar gemas pero en este caso les dire como hacerlo desde cero.
Despues configuramos RSPEC para el Testeo con: Rspec en nuestro gem file en la sección de desarrollo y testeo se agrega rspec-rails
group :development, :test do
# Use RSpec for specs
gem 'rspec-rails', '>= 3.5.0'
# Use Factory Girl for generating random test data
gem 'factory_girl_rails'
end
actualizamos bundle
y correemos el instalador
rails g rspec:install