chemist

chemist

Advice needed on microservices and JSON API - displaying errors

Hi, this forum has been such a great help.

Will like to seek clarity on two issues. Will love some correction on my terminology and all also.

  1. I have read as much as I can on microservices and all. Are microservices just simply moving things out of web controllers and exposing them as JSON APIs as far as possible. So even to create a new record, it will be handled by a microservice exposed as a /create endpoint?

  2. As things are moved to JSON API endpoints, how does one use the :put_flash? Sure the JSON API can return an error tuple but what happens next? I have been using plain vanilla javascript to inject the error into the .innerHTML of the HTML elements formerly used by :put_flash.

I am thinking that the way it should work is
The JSON endpoint generates the status code along with the message be it a success or error.
The client-facing webpage has a javascript routine to process the received message and renders the success or error.

Please correct me if im way off here. Many thanks.

Most Liked

kokolegorille

kokolegorille

  1. There should be more than just moving things… a microservice should be autonomous, and have it’s own database. It’s not even clear You want to use REST api to communicate between services, some may use Event bus, or pubsub.

  2. It’s true put_flash has no use in case of JSON api.

It’s one of the case where I would choose an umbrella application.

chemist

chemist

Thank you so much. There are simply too many buzzwords and people just need to wade through all of them as they settle down and make serious stuff beyond simple tutorials and throwaway single-user applications.

Basically some background for you as you helped…

I was just confused about microservices and JSON API endpoints until I realize microservices are just the “end goal” while what I am doing building JSON API endpoints are actually part of achieving that. I doubt I am that adept to explore other less well documented patterns such as event bus and pubsub though I have heard good things about them

  1. Thank you. I was so disconcerted that JSON APIs cant even use put_flash and I was thinking of a convoluted way such as a handoff mechanism between a JSON API and conventional HTML routes. But i figured that it is overly… complex. So Im using plain vanilla javascript to process JSON responses and display the errors.

I look forward to being of assistance to you should you should ever have questions more in the business domain and etc.

dimitarvp

dimitarvp

Everything is a fair game. Last I had to devise such an API on my own, I just did this:

{
  "errors": [
    {"username": "must be more than 3 characters"},
    {"password": "must include a special symbol"}
  ]
}

Not sure I understand your conundrum though. Do you seek general advice or particular Phoenix implementation techniques? If it’s the former, don’t bother. Do it the way you feel is right.

Where Next?

Popular in Questions Top

New
Tee
can someone please explain to me how Enum.reduce works with maps
New
chrisalley
ExUnit now has describe blocks which is a welcome addition coming from RSpec. In the docs, it states that nested hierarchies of describe ...
New
johnnyicon
Hi all, I’ve just started learning Elixir and Phoenix Framework, so please pardon my n00bness at this stage. I’m trying to use Postgres...
New
LegitStack
I’m trying to make a websocket server in Phoenix or raw Elixir. I heard about gun, I think I could use cowboy, but since I’m not that sma...
New
hariharasudhan94
lets say i have a sample like a = 20; b = 10; if (a > b) do {:ok, "a"} end if (a < b) do {:ok, b} end if (a == b) do {:ok, "equa...
New
vrod
I am using the Starship cross-shell prompt – it seems pretty nice, but I get some errors: [WARN] - (starship::utils): Executing command ...
New
belgoros
I’m not a pro in using Regex and can’t figure out why the following behaviour happens, especially if we take into account the difference ...
New
jason.o
In the code below, if the create action is not set to accept “extra_key” as an input, it errors out with a message shown above. Is there ...
New
joaquinalcerro
Hi there, I am working with Ecto-Postgresql and I need to call all of the records from a specific table but the table has 40,000 records...
New

Other popular topics Top

Darmani72
If I have a post route which an argument: post /my_post_route/:my_param1, MyController.my_post_handler How would get the post params ...
New
senggen
Erlang/OTP 25 [erts-13.2.2] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] 15:22:35.803 [error] gen_event {lager_file_backend...
New
gshaw
What is the idiomatic way of matching for not nil in Elixir? E.g., First way: defp halt_if_not_signed_in(conn, signed_in_account) when...
New
vegabook
I’m brand new to Phoenix and I have stripped one of the demo applications to the bone. I just want to get an svg up on the screen. Here i...
New
freewebwithme
Using vs code and installed ElixirLS: support and debugger. And I got an error popped up on start up says Failed to run ‘elixir’ comma...
New
sergio_101
I am VERY much an elixir newbie. I have taken one elixir course and one phoenix course on Udemy. During that course, I saw the instructor...
New
bsollish-terakeet
Credo is smart enough to check for (something like) this: assert length(the_list) == 0 with this response: Checking if an enum is empt...
New
hariharasudhan94
I would like to know what is the best IDE for elixir development?
New
marick
I had some trouble figuring out how to make many-to-many associations work. Once I got it working, I wrote a blog post. Because I’m a nov...
New
jononomo
For some reason my phoenix channels are working for me in my local dev environment, but as soon as I deploy via Docker, I get a 403 error...
New

We're in Beta

About us Mission Statement