digitsu

digitsu

How do I connect to a Phoenix API server from a Elixir client?

Hi I’m trying to do something simple, which is just to connect to a phoenix server backend via its API pipeline (JSON) using not a js client, but a separate elixir process. I understand that if this process is going to talk websockets/phoenix channels, there is the PhoenixClient library that can be used, but I just need to talk standard HTTP, sending across JSON messages through POST/GET etc.

Is there a library that can do this? I think all I need to get is a handle on the connection, and I think the standard phoenix library should be able to do this but the only examples I can see of this is wrapped up in the PhoenixConnTest module, and I want to do this outside the context of a test.

Thanks! :smiley:

Most Liked

beepbeepbopbop

beepbeepbopbop

So as far as I can tell, you’re basically trying to call an endpoint in an existing Elixir application? If so, there’s a number of HTTP clients that you can utilise:

  • :httpc is provided by the Erlang runtime. While it does work, there’s a lot of Erlang idioms that you’ll need to use.
  • hackney is a pretty common HTTP client written for Erlang. It’s a fairly used alternative to httpc.
  • mint is probably the most recent HTTP client on the block, written in Elixir.

However, I would make the distinction between the HTTP client library as wrappers that use said client libraries/abstractions. One such example is finch (GitHub - sneako/finch: Elixir HTTP client, focused on performance · GitHub) which utilises mint which is focused on performance.

If you want something even more generalised, Tesla (GitHub - elixir-tesla/tesla: The flexible HTTP client library for Elixir, with support for middleware and multiple adapters. · GitHub) can be used with various HTTP clients (finch, hackney, httpc), that includes abstractions such as middleware and a more module definition approach to client design.

Keep in mind that these assume “normal” HTTP requests. If you need something to work with Phoenix channels, I recall an Elixir library for that, but it escapes me at the moment.

Last Post!

digitsu

digitsu

This is super. Thanks. Exactly what I was looking for.

I’ll check out these libs.

FYI the library for channels is PhoenixClient, which just does channels and not plain HTTP.

Where Next?

Popular in Questions Top

Qqwy
Original source of discussion: This topic on the Pragmatic Programmers’ Functional Web Development with Elixir, OTP, and Phoenix forum. ...
New
vonH
In asking this question I am more interested about the expressiveness of the language itself and less concerned about the availability of...
New
skosch
To my knowledge, put_in, Map.update etc. all have the one limitation of not automatically creating intermediate keys when needed (for exa...
New
ashish173
I am using Ecto timestamps with postgres, I can see the timestamps() use the :naive_dateime but for my use case I wanted to store the ti...
New
PeterCarter
There are pre-rolled solutions for other frameworks that do work. However, Phoenix does not seem to have these. Have people had good expe...
New
komlanvi
Hi everyone, I was playing with phoenix liveView but I run into an issue. I have a form and want to validate each input text when the te...
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

Other popular topics Top

KronicDeth
Elixir plugin for JetBrain’s IntelliJ Platform (including Rubymine) This is a plugin that adds support for Elixir to JetBrains IntelliJ...
289 36820 110
New
hariharasudhan94
Lets say I have map like this fetching from my database %{"_id" => #BSON.ObjectId<58eb1a7a9ad169198c3dXXXX>, "email" => ...
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
lanycrost
Hi everyone! I need implement if…else if…else condition from my elixir code, and anymore of this control flow structures not work proper...
New
stefanchrobot
What’s the safe way to decode a JSON string into a struct? I want to avoid calling String.to_atom. Jason.decode can give me a map with st...
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

We're in Beta

About us Mission Statement