Simplify Rails Application With JSONAPI-Resources
Simplify Rails Application With JSONAPI-Resources
24 May 2021
Introduction
JSONAPI::Resources is a gem or a framework which helps us design the server that works with json-api and resources. It requires attributes and relationships to work the servers and APIs.
Installation
To install the JS application-
- gem ‘jsonapi-resources’
- bundle
Why JSONAPI::Resources?
- JSONAPI::Resources makes the rails application more easy to communicate the json formatted data and api.
- With the help of jsonapi resources we don’t need to maintain the controller.
- JR makes it easy to communicate between the request and required data from the given resource table.
Work with rails application and jsonapi resources:
- Change the application controller: We can include the jsonapi resource controller in it to make the application controller work with jsonapi resource controller.
OR
We can just inherit the JSONAPI::ResourceController to ApplicationController.
We can also do this on a controller basis so specific controllers can work for the API. - Eager loading of the classes is needed to work this JSONAPI::Resources could be loaded and processed globally.
- We might get CORS issues when accessing from the browser so we have to install the CORS gem for the application.
- Use a rails generator to create a model for Users and that model is related to another model for Posts. It will look like this:
- User model: rails g model User name:string
- Post model: rails g model Post uset_id:integer title:string content:string
- User model: rails g model User name:string
- Run the migration with ‘rake db:migrate’
- After this tables will look like this:
- users table
- posts table
- users table
- Use a rails generator to create the empty controllers and these controllers will be inherited from ResourceController.
- rails g controller Users –skip-assets
- rails g controller Posts –skip-assets
- Create a directory to hold the resources: mkdir app/resources.
- Create a resource for each model appending _resource.rb with the model name.
- user_resource.rb
- post_resource.rb
- user_resource.rb
- Define the routes:
- Launch the rails server: rails server.
- Create a new user:
- Create a new post:
- For more information about JR visit: https://jsonapi-resources.com/