dimitarvp
I’m looking into returning JSON errors from an API app. I know the specs dictate you must always return HTML on certain error codes but I want to circumvent that because I’ll have complete control both on the calling side and the service itself. Plus the service will send logs and telemetry and I want errors to be machine-parseable.
I tried a few things after searching the forum but I couldn’t manage to make any of them work.
Then I stumbled upon Plug.ErrorHandler — Plug v1.20.2. Call me stupid but I have no clue how to use it?
So as a start I want all 404s and 500s to be wrapped with a JSON key errors in an object, returned alongside a 404 and 500 status.
Is this possible using Plug.ErrorHandler? If so, how exactly?
Trending in Questions
I’m aware of 2 such projects, are there others?
git: GitHub - team-alembic/realworld: A fullstack Phoenix LiveView application with back...
New
I having some trouble figuring out if I have set myself too strict of standards for my production server. Currently I can handle 75% of r...
New
Hi everyone.
My team and I have been working on a fairly modest app based around video streaming and chat, but we’ve landed a customer t...
New
I really like the adapter patterns that ecto, nebulex, waffle, etc. use and would love find something similar for a key management servic...
New
Hello folks!
So at work, we are seeing some situations where we have to define some “fixed” strings that are used across the codebase in...
New
How Can I Optimise Compile Time Dependencies
I have been building an elixir application for about 2 years now. Many modules and files ha...
New
Hi,
we run different LLM models across a cluster, with each node loading a configurable subset. Model-specific queues let nodes consume ...
New
Other Trending Topics
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
I fully migrated to my own harness from Anthropic/Gemini and I think it’s time to share it. Welcome DSH, the DeepSeek Harness, fully writ...
New
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
There has been a thread to discuss the Stack Overflow Developer Survey on this forum every year since 2018, so here’s yet another one for...
New
I love Elixir. It’s one of 2 programming languages I’ve ever fallen in love with.
But I don’t use it anymore.
Serverless was the promis...
New
Emily is an Elixir library that runs Nx computations on Apple’s MLX. Install it as the default Nx backend and Nx, defn, Axon, Nx.Serving,...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #ai
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #blog-post
- #elixirconf-us
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #elixirconf-eu
- #api
- #forms
- #security
- #performance










Showing Posts 1 to 7- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
Exadra37
Please bear in mind that all what I am about to suggest is from the top of my mind, therefore not tested, and may be wrong, but hey it doesn’t hurt for you to give it a try
If I am not mistake the above will override the call to the Error view at
lib/yourapp_web/views/error_view.ex.I think that this will return it in json:
Maybe you can simplify the above to use in your router:
EDIT: On a second though I think this isn’t reflecting the intended use from the Plug.ErrorHandler
An Alternative that you can try is to change the Error view to always return a JSON object:
dimitarvp
I still don’t understand where to put this copy-pasted module code in my Phoenix project, and how do I register it to be used – in the router, the endpoint, somewhere else?
The docs kind of assume certain knowledge that I found I don’t have.
Exadra37
I update my previous post while you made this one to make it clear, but here it his again:
This is a guess from me, not actually tried it.
dimitarvp
Nope, that didn’t work.
Hitting a non-existent endpoint with
curl:And it’s returning markdown text? Why?
I am still trying to understand how do I just intercept ALL errors and wrap them in keys in a resulting JSON object.
Exadra37
Sorry for not having given you a good solution
But did you try the Error view approach? I think that one should work
Because you are in development mode. Go to
config/dev.exsand setdebug_errorsto false.dimitarvp
No idea what to do exactly there either.
It’s been an absolutely awful day and I’d love complete code examples. At least today. If not, I’ll try formulating a solution on a fresh head tomorrow.
Exadra37
I showed it to you in my first post:
This file can be found in your app web views folder.
Basically ti’s overriding the
render/2function called to render the error templates for each error status code that is defined in the templates folder.It also customizes the
template_not_found/2to return the Json error.