Posted in by Tudipat 08:05Comments Off on 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
Run the migration with ‘rake db:migrate’
After this tables will look like this:
users table
posts 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.
All content provided on this blog is for informational purposes only. Tudip Technologies provides no endorsement and makes no representations as to accuracy, reliability, completeness, suitability or validity of any information or content on, distributed through or linked, downloaded or accessed from this site. Tudip Technologies will not be liable for any errors, omissions, or delays in this information or any losses, injuries, or damages arising from its display or use of the information on this site. All information is provided on an as-is basis without any obligation to make improvements or to correct errors or omissions. This site may contain links to other websites. Tudip Technologies makes no guarantees or promises regarding these websites and does not necessarily endorse or approve of their content. You may not modify any part of the blog. The inclusion of any part of this blog in another work, whether in printed or electronic or other form, or inclusion of any part of the blog in another website by linking, framing or otherwise without the express permission of Tudip Technologies is prohibited. This site may not be used for any illegal or illicit purpose and Tudip Technologies reserves the right, at its sole discretion and without notice of any kind, to remove anything posted to this site. By using this site, you hereby acknowledge that any reliance upon any materials shall be at your sole risk.