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.
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 .
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
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.
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:
Especificar atributos
En tu 02042720449_create_secret_menu_items.rb, vas a copiar y pegar:
Migra tu tabla
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.
Paso 5: Es hora de definir indexar, mostrar, crear, actualiza y de destruir acciones
Todo esto, permitirá que nuestra API pueda:
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
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
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.