-
-
Notifications
You must be signed in to change notification settings - Fork 271
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[RFC] Expose REST API endpoints from Avo resources #1146
Comments
I upvote for this |
Hi Adrian, any chance this is on the roadmap for v3? |
I'd like to start working on that after we launch V3. We don't yet have it on the roadmap. |
Hello @adrianthedev with the hype from Tropical.rb, i have made a small poc to this feature: https://github.com/PedroAugustoRamalhoDuarte/avo-api It s a very minimal example for us to see the necessary work to make this feature. Only working for show endpoint right now |
You rule @PedroAugustoRamalhoDuarte! Let me give it a spin next week. |
Proposal
Create a JSON API endpoints using the resource configuration.
Read-only in the initial iteration.
Example
A resource like the one below to expose a
/resources/teams
REST API endpoints for:Benefits
This could make scaffolding API endpoints very easy.
Actions
Actins could turn into their own paths, mapping parameters to fields and using their logic to execute that action
Filters
Filters could take in params and use their logic to filter the records in the response.
Views
Maybe add a new
view
with the visibility helpershide_on: :json
?Approach (initial iteration)
Have a route and controller that automatically generates the endpoints. Each endpoint would expose the fields that have been configured in the resource.
We'll have a generator that the user runs to generate those controllers. Each controller will handle one resource.
Controller methods
Let's try to keep as much logic as we can in those controllers and allow the user to take control by overriding those methods similar to how we do it with
destroy_success_action
, anddestroy_fail_action
.Property visibility
Each endpoint will take into account the visibility settings.
Ex: on
/api/resources/teams
each object will have only the properties that are visible on the Index view. Same for other views.We might want to add a few other helpful methods like
process_record
where the user can take more control over the data manipulation.Rest structure
Let's take inspiration from the greats. We don't want to reinvent the wheel here.
Endpoint versioning
Each controller/controller set will land in a version directory. The user can generate new versions of the API in new directories.
app/controllers/api/v1/products.rb
Endpoint structure
The text was updated successfully, but these errors were encountered: