I currently have a working Phoenix application with a well-defined set of routes. Each route roughly implements a CRUD interface, and the bulk of the code was generated using
What is the best practice around adding similar routes for a JSON API?
Thanks. I should have been more specific. Can I reuse the existing schemas, and only create API routes?
I would say you definitely want to reuse the existing schemas. In your views you can determine what you return in the JSON response. So if there are values you don’t want to return, don’t include them in the response. If there values from different schemas you want to return in the same response, you need to make an ecto query that joins them.
schemas yes, contextes yes… but You will need to create controllers, fallback_controller, views as well.
another options would be to use graphql. You could reuse almost everything, You just need to add graphql schemas
Yes - Use the
--no-schema flags. Like this:
mix phx.gen.json Accounts User users --no-context --no-schema
This will look in
lib/proj/accounts/user.ex and generate a JSON api route for the schema defined at that file. It will not try to recreate a context module nor a new schema
The order of arguments to the command is:
mix phx.gen.json Context Schema db_table
Context is the phoenix context,
Schema is your Elixir schema, and
db_table is the table in your database that
Schema is linked to
In some cases, you may wish to bootstrap JSON views, controllers, and controller tests, but leave internal implementation of the context or schema to yourself. You can use the
--no-schema flags for file generation control.