
Cómo crear una API utilizando Ruby on Rails
Tabla de contenido
Acceso Rápido
En este blog, te enseñaremos paso a paso cómo crear una API utilizando Ruby on Rails, incliso sin tener un mayor conocimiento sobre este framework que trabaja con lenguaje Ruby.
Paso a paso: crear una API utilizando Ruby on Rails
Paso 1: Crear una API de Rails
Para hacer esto, en el directorio que elijas debes escribir el siguiente código en su terminal. Este permitirá crear una nueva API que llevará por nombre secret_menu_api
#in your terminal rails new secret_menu_api –api}
Luego, cambiate al menu de la API abriéndola al escribir esto en tu terminal:
# in your terminal cd secret_menu_api code .
PASO 2: Habilitar CORS (Intercambio de Recursos de Origen Cruzado)
CORS permite que otros accedan a su API. Para evitar el acceso no deseado a su API, Rails desactiva automáticamente CORS. En el explorador de archivos de su API de Rails recién creada, expande los siguientes directorios para abrir el archivo cors.rb.
config>inicializadores>cors.rb
Entonces, Descomenta las líneas 8-16. En la línea 10, cambie el código (origins 'example.com') a (origins'*') como se muestra a continuación:
# in config>initializers>cors.rb # lines 8-16 Rails.application.config.middleware.insert_before 0, Rack::Cors do allow do origins '*' resource '*', headers: :any, methods: [:get, :post, :put, :patch, :delete, :options, :head] end end
En el archivo ‘explorer’, ve hacia abajo y abre Gemfile. Descomenta la línea 26, gem ‘rack-cors’:
# in Gemfile gem 'rack-cors'
Luego, en el terminal ejecuta:
#in terminal bundle install
Paso 3: Crear el modelo, el controlador, la tabla de migración de la base de datos y la ruta a través del comando Rails g resource
Sintaxis del comando:
# in terminal rails g resource Secret_menu_item
Luego de hacer esto, notarás que este comando creó los siguientes archivos (incluimos el directorio de archivos en la segunda línea):
Un modelo llamado secret_menu_item
app>modelos>secret_menu_item.rb
Un controlador llamado secret_menu_items_controller.rb app>controllers>secret_menu_items_controller.rb
Una ruta llamada rutas.rb
config>routes.rb
Una tabla de migración de base de datos llamada 202042720449_create_secret_menu_items.rb
db>migrar>202042720449_create_secret_menu_items.rb
NOTA: 202042720449 es simplemente una marca de tiempo, tu archivo podría tener una marca de tiempo distinta.
Paso 4: En este paso toca especificar los atributos y tipos de datos de un elemento del menú secreto
La API se diseñó para mostrar unformación útil acerca de los elementos en el menú secreto, por lo que podemos mostrar dicha información configurando lo siguiente como atributos:
- nombre del elemento del menú secreto
- nombre del restaurante que ofrece el elemento del menú secreto
- descripción del menú
Especificar atributos
En tu 02042720449_create_secret_menu_items.rb, vas a copiar y pegar:
# in db>migrate>202042720449_create_secret_menu_items.rb
class CreateSecretMenuItems < ActiveRecord::Migration[6.0]
def change
create_table :secret_menu_items do |t|
t.string :menu_name
t.string :restaurant_name
t.string :menu_description
end
end
end
Migra tu tabla
# in your terminal
rails db:migrate
Deberías ver lo siguiente en el terminal si la migración fue exitosa:
# Message in your terminal == 20200427020449 CreateSecretMenuItems: migrating ============================ -- create_table(:secret_menu_items) -> 0.0022s == 20200427020449 CreateSecretMenuItems: migrated (0.0023s) ===================
En tu directorio db, debes abrir schema.rb. Vas a notar que este archivo ahora muestra su estructura de datos.
# in db>schema.rb
ActiveRecord::Schema.define(version: 2020_05_03_161829) do
create_table "secret_menu_items", force: :cascade do |t|
t.string "menu_name"
t.string "restaurant_name"
t.string "menu_description"
end
end
Paso 5: Es hora de definir indexar, mostrar, crear, actualiza y de destruir acciones
Todo esto, permitirá que nuestra API pueda:
- Índice: mostrar las instancias de los elementos del menú en la base de datos
- Mostrar: reflejar instancia de un elemento del menú
- Crear: realizar una instancia del menú
- Actualizar: update una instancia de un elemento del menú existente
- Eliminar: deshacerse de un elemento del menú secreto
Copia y pega en secret_menu_intems_controller.rb.
#in app>controllers>secret_menu_items_controller.rb class SecretMenuItemsController < ApplicationController def index @secretMenuItems = SecretMenuItem.all render json: @secretMenuItems end def show @secretMenuItem = SecretMenuItem.find(params[:id]) render json: @secretMenuItem end def create @secretMenuItem = SecretMenuItem.create( menu_name: params[:menu_name], restaurant_name: params[:restaurant_name], menu_description: params[:menu_description] ) render json: @secretMenuItem end def update @secretMenuItem = SecretMenuItem.find(params[:id]) @secretMenuItem.update( menu_name: params[:menu_name], restaurant_name: params[:restaurant_name], menu_description: params[:menu_description] ) render json: @secretMenuItem end def destroy @secretMenuItems = SecretMenuItem.all @secretMenuItem = SecretMenuItem.find(params[:id]) @secretMenuItem.destroy render json: @secretMenuItems end end
Paso 6: crear rutas para indexar, mostrar, crear, actualizar y destruir acciones
Cuando se habla de rutas nos referimos a las que reciben las solicitudes HTTP en el lado del cliente, reenviando estas solicitudes a las acciones apropiadas. Para configurarlas, copia y pega en tu route.rb:
# in config>routes.rb Rails.application.routes.draw do resources :secret_menu_items, only: [:index, :show, :create, :update, :destroy] end
Paso 7: Sembrar la data
Crear instancias de los elementos del menú secreto en la base de datos:
# in db>seed.rb menu1 = SecretMenuItem.create(menu_name: "Chipotle Nachos", restaurant_name: "Chipotle", menu_description:"Build a plate of nachos with all of your favorite fixings") menu2 = SecretMenuItem.create(menu_name: "Starbucks butterbeer Frappuccino", restaurant_name: "Starbucks", menu_description:"Combine three pumps of toffee nut syrup and three pumps of caramel with a Crème Frappuccino base") menu3 = SecretMenuItem.create(menu_name: "Skittles", restaurant_name: "Jamba Juice", menu_description:"A mixture of lemonade, lime sherbet, frozen yogurt, and strawberries")
Siembra la data
# in your terminal rails db:seed
Verifica si se hizo de manera correcta:
# in your terminal rails c # It will pull up a console 2.6.1 :002 >
Escribe SecretMenuItem.all para extraer todas las instancias de los elementos del menú secreto que se sembró:
# in your terminal 2.6.1 :002 > SecretMenuItem.all (0.5ms) SELECT sqlite_version(*) SecretMenuItem Load (0.2ms) SELECT "secret_menu_items".* FROM "secret_menu_items" LIMIT ? [["LIMIT", 11]] => #<ActiveRecord::Relation [#<SecretMenuItem id: 1, menu_name: "Chipotle Nachos", restaurant_name: "Chipotle", menu_description: "Build a plate of nachos with all of your favorite ...">, #<SecretMenuItem id: 2, menu_name: "Starbucks butterbeer Frappuccino", restaurant_name: "Starbucks", menu_description: "Combine three pumps of toffee nut syrup and three ...">, #<SecretMenuItem id: 3, menu_name: "Skittles", restaurant_name: "Jamba Juice", menu_description: "A mixture of lemonade, lime sherbet, frozen yogurt...">]>
Si puedes visualizar todas las instancias, entonces todos los datos se sembraron con éxito.
En Rootstack, nuestros developers expertos han creado APIs para dar solución a los problemas tecnológicos que presentan nuestros clientes. Puedes formar parte de un equipo multicultural de developers, solo aplica aquí y conoce los beneficios de una de las empresas tecnológicas con mayor crecimiento en Latinoamérica.
Te recomendamos en video