iamacube

iamacube

Remove square brackets [] from POST method

I am using elixir - phoenix - tesla - third party api

I want to send a post request to the third party api and send the same parameter with two different values, which in the third party api documentation stated that it is possible to do it. but i want to remove the square brackets around the parameter.

Currentley I get this is what is being sent:

green=yes&blue=no&shades[]=300&shades[]=199`

the api sends a response that Parameter 'shades' is missing

i want it like this:

green=yes&blue=no&shades=300&shades=199`

this is my code using Tesla — tesla v1.20.0

    {:ok, response} = request(method: :post, url: "/edit", body: [green: "yes", blue: "no", shades: [List.first(shades), List.last(shades)]])

it works when sending one parameter in a map like this:

%{
      "green" => "yes,
      "blue" => "no",
      "shades" => 300
  }

but again I need to send two values at the same time, how do I achieve this?

Most Liked

brettbeatty

brettbeatty

It looks like you may have configured Tesla to use Plug.Conn.Query to encode the params, and it looks like it throws away repeat params, which is how I would have expected to get your thing to work.

I think what I would look at would be passing your own :encode option to Tesla.Middleware.FormUrlencoded that allows duplicates.

Last Post!

iamacube

iamacube

I want to admit that I am pretty new to elixir but after digging a little bit I managed to get it to work using this:

Plug Repository

  # covers non-keyword lists
  defp encode_pair(parent_field, list, encoder) when is_list(list) do
    mapper = fn
      value when is_map(value) and map_size(value) != 1 ->
        raise ArgumentError,
              "cannot encode maps inside lists when the map has 0 or more than 1 element, " <>
                "got: #{inspect(value)}"

      value ->
        [?&, encode_pair(parent_field <> "", value, encoder)]
    end

    list
    |> Enum.flat_map(mapper)
    |> prune()
  end

instead of [?&, encode_pair(parent_field <> "[]", value, encoder)] in last line, i just removed the [] like this: [?&, encode_pair(parent_field <> "", value, encoder)]

what I want to know if this is the right way to do it? and would this cause any issues noting that I am only going to be using it for this API call?

Where Next?

Popular in Questions Top

electic
Hi, I am new to Elixir. I am trying to use the DateTime component to insert a date into MySQL however the there seems to be no way to fo...
New
Brian
What is the proper way to load a module from a file in to IEX? In the python world, doing something like this pretty standard: from ....
New
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
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
sen
Hi All, I set a environment variables in dev.exs , like below code. when i start server, how can i set the ${enable} value? thanks. d...
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
Harrisonl
We have an ECS cluster with 4 services, where each task joins a single cluster, via discovery ECS discovery service. Currently when I de...
New

Other popular topics Top

minhajuddin
I have seen a lot of code which picks the first element from a list using Enum.at(0) instead of List.first. Is there a reason why people ...
New
Brian
What is the proper way to load a module from a file in to IEX? In the python world, doing something like this pretty standard: from ....
New
chrismccord
Phoenix 1.4.0 released Phoenix 1.4 is out! This release ships with exciting new features, most notably with HTTP2 support, improved deve...
688 31525 112
New
gausby
I asked this very same question on twitter and got some interesting feedback, but I thought it would be a good question to ask here as we...
1207 40082 209
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
AstonJ
Seen any cool LiveView demos, sample apps or examples? Please post them here! :003:
New

We're in Beta

About us Mission Statement