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
Hello!
Suppose you are building workflow (order / task / payment) processing system with the following requirements:
Each workflow con...
New
I’m in search of an Elixir library that offers PDF generation capabilities similar to Ruby’s Prawn. While there have been discussions abo...
New
Hey guys,
I’ve got a huge CSV ( around 10 GB ) that needs to be processed hourly
Do you guys have any suggestions what is the best prac...
New
Kia ora,
We have been using elixir-google-api to connect to Google Drive. However, with the updates to Tesla due to CVEs this is now bro...
New
Hello!
Could someone please give me a help/sample code, how to delete a file from s3 using waffle/waffle_ecto from Phoenix app.
I creat...
New
I have what I’ve heard referred to as a “lookup table” in my database. This is a way of assigning codes to common values. One common lo...
New
Hello,
I’m developing a online persistent chat system (what’s app) like using elixir/dynamodb/aws for a mobile app(flutter).
The diffic...
New
Other Trending Topics
Hobbes is a low-level distributed database for the Elixir programming language.
Hobbes provides a simple, safe, and scalable storage lay...
New
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
ExRatatui lets you cook up rich terminal UIs in Elixir, powered by Rust’s ratatui via Rustler NIFs. Build interactive terminal applicatio...
New
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge & Solve.
They are GUI (Emerge) and State management (S...
New
There are three potential reasons for members of this forum to have a look at https://vutuv.de
You are tired or annoyed of LinkedIn.
Yo...
New
Latest Phoenix Threads
Latest on Elixir Forum
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
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #blog-post
- #ai
- #phoenix_html
- #iex
- #elixirconf-us
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #hex
- #security
- #metaprogramming










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.