snunezcr
Adding JSON api to existing Phoenix application
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 phx.gen.html.
What is the best practice around adding similar routes for a JSON API?
Marked As Solved
JohnnyCurran
Yes - Use the --no-context and --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-contextand--no-schemaflags for file generation control.
Also Liked
maz
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.
JohnnyCurran
Popular in Questions
Other popular topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #elixirconf-us
- #advent-of-code
- #distillery
- #processes
- #forms
- #api
- #metaprogramming
- #security
- #hex









