Why Grape Is Best For Building Rails API? Learn To Build Rails API With Grape


In today’s development world, one of the most important factor is to maintain proper documentation for complete life cycle of the development and it must be easy for any new developer to understand. Writing API using Grape gives you good manner of maintaining API documentation without any extra efforts and will allow you to maintain the versions also.


Why We Should Choose Grape For Building Rails API?


  • It’s easy to handle API document with description without writing any separate API document.
  • Easy and standard syntax of API endpoints.
  • Easy way to format data for typical response.
  • Adding new parameter and basic validation can be done easily.
  • Definition of routes and API body is very decent and developer friendly.
  • Grape API is much faster than any other API for rails application.
  • Versioning support


Above are the main points that will do a great work for your API application and this are some major user centric reason that’s why we need Grape for building rails API.


Before all, if you’re new to Rails you can explore these 13 Rails Command Line which will help you to be better in Rails development.


What Is GRAPE?


Grape is a API framework for ruby language, it is used to write RESTful API for the existing web application that is already written in Rails or Sinatra framework. It has inbuilt option like common convention, multiple data/response format, versioning etc.


Learn To Build Rails API With Grape:


 Grape Set up With Rails


READ NOW >>  Laravel Eloquent Relationships - Part 2

Let us assume that we have two models like Book and Flow,


Let’s focus on Book Model First:


Book has_many Flow (Association)


So how you can generate it?

You can do it with below code,


rails g model Book isbn:integer title stock:integer

rails g controller Books

rails g model Flow previousStock:integer newStock:integer book:references

rails g controller Flows

add has_many :flows in book model


Now, run the migration


rails db:migrate


Let’s Add Required Gems To Use Grape


Add below code in your Gemfile.

gem 'grape', '~> 0.14.0'

gem 'grape-entity', '~> 0.7.1'

gem 'grape_on_rails_routes', '~> 0.3.2'

gem 'faker', '~> 1.9', '>= 1.9.1'


After adding gems just run bundle.


Detailed Information About Used Gems:


Grape : Grape is a API framework for ruby language, it is used to write RESTful API for the existing web application that is already written in Rails or Sinatra framework. It has inbuilt option like common convention, multiple data/response format, versioning etc..

Grape-Entity: To maintain and handle different kind of data and structure of data.

Grape On Rails Routes: To generate API routes.

Faker: Easy to populate data in database.


Related: Everything You Must Know About Associations In Rails



Populate Data In Rails DB Using Faker:


To populate the data, add below code in seeds.rb


15.times do

Book.create!(isbn: Faker::Number.number(4), title:    Faker::Superhero.power, stock: Faker::Number.between(2, 19))


book_ids = Book.ids

95.times do

Flow.create!(book_id: book_ids.sample, newStock:   Faker::Number.between(2, 15), previousStock: Faker::Number.between(2, 15))



Now run,


rake db:seed


Once it’s done you can use ‘rails console’ to check & verify the db whether the record is created or not.


READ NOW >>  Caching In Ruby On Rails 5.2

All looks  good now we can go for next step.

Start Building API With Grape


Step 1: Configure API


The first thing that we need to do is, we need to configure the API that is written in our application. For that we need to configure the file named application.rb


config.paths.add File.join(‘app’, ‘api’), glob: File.join(‘**’, ‘*.rb’)

config.autoload_paths += Dir[Rails.root.join(‘app’, ‘api’, ‘*’)]


this code will help application to find the API path.


Step 2: Create API Folder


We have to create API folder inside the app folder,

Inside API folder create one more folder called book_store or just run the below command


mkdir -p app/api/book_store


Next need to create a base.rb file inside book_store


mkdir -p app/api/book_store/base.rb


Add below content in base.rb


module BookStore

 class Base < Grape::API

   mount BookStore::V1::Books




Step 3: Find Base Path Of API


this code will return you all the API path

mount BookStore::V1::Books



 Step 4: Setup Route For Grape API


Just add the below line in your routes.rb file,


mount BookStore::Base => ‘/’


This will point base.rb as base route for API application.


Step 5: Create Method With Maintaining Versioning


Run the below command to generate the api file called books.rb with maintaining V1.


mkdir -p app/api/book_store/v1

touch app/api/book_store/v1/books.rb


Go to books.rb and write the code below:


Step 6: Generate Routes To Access API


Use this code to generate routes to access API,


rails grape:routes


This will return you output as,


GET  | /api/:version/books(.json)  | v1 | Return list of books


Now you can access it from browser and can get the data from this API.




You have created a sample API using Grape….


For better understanding, i have covered basics in this blog and for more information about Grape like formatting data or entity related things, I will come with my new blog as part-2. Post me your interest in comments to come up with interesting blogs. 


Contact form 7 Mailchimp extension by Renzo Johnson - Web Developer