Packard_Goose
I have this command that works in terminal
curl "https://api.mysite.com/protected/json/new -d "user[email]=link@hotmail.com&user[cellphone]=112334558864&user[country_code]=49
I tried a few different ways with Tesla using the post function to replicate the request. Nothing I’m trying works but this is the latest attempt
post(client, “/new”, “user[email]= link@hotmail.com&user[cellphone]=112334558864&user[country_code]=49”)
Does anyone know of the translation into Tesla for essentially posting arrays with the post function?
Trending in Questions
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
Hello,
I’m trying to build a basic Phoenix web-app, and I’d like to use Tailwind.
However, when I launch mix phx.server, I get an error...
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
Other Trending Topics
A little off-topic, but I feel like people here have a good head on their shoulders.
I used to be quite good at making software. Was luc...
New
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
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
- #metaprogramming










Showing Posts 1 to 3- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
7stud
You just need to add the
Tesla.Middleware.FormUrlencodedplug to your pipeline, then specify a map for the body of the request:So, something like this:
On the server side, I see the post body:
user%5Bcellphone%5D=12345&user%5Bcountry_code%5D=49&user%5Bemail%5D=link%40hotmail.comThat is different than the post body that your curl command produces:
user[email]=link@hotmail.com&user[cellphone]=12345&user[country_code]=49However, the post body produced by curl does not conform to the spec for the Content-Type
application/x-www-form-urlencoded, which is what the-dflag automatically sets as the Content-Type header in the curl post request:The spec (see 17.13.4 Form content types) requires that all non letter/number characters, i.e. all non alphanumeric characters, be escaped with
% character codes:curl does allow you to specify that you want the post data to be percent encoded using the
--data-urlencodeflag instead of-d, but that still doesn’t produce the same post body as tesla. This is what I get:user[email]=link%40hotmail.com%26user%5Bcellphone%5D%3D12345%26user%5Bcountry_code%5D%3D49For some reason, curl does not escape the brackets everywhere as can be seen in
user[email]. Confounding. Edit: Ah. To get curl to percent encode the leading name in the data, you have to prepend the data with an equals sign:--data-urlencode '=user[email]=link@hotmail.com&user[cellphone]=12345&user[country_code]=49'and the server receives the post body:
user%5Bemail%5D%3Dlink%40hotmail.com%26user%5Bcellphone%5D%3D12345%26user%5Bcountry_code%5D%3D49Unfortunately, that still does not conform to the spec: curl replaces the equal signs and the ampersands with percent escapes, which confuses the server and the server can’t extract the key/value pairs. Compare to tesla:
user%5Bcellphone%5D=12345&user%5Bcountry_code%5D=49&user%5Bemail%5D=link%40hotmail.comTesla get’s it right and curl doesn’t.
BrightEyesDavid
I haven’t checked its behaviour with this data, but in case you wish to try a CLI HTTP client other than curl, I’ve had success with https://httpie.org . My issue with curl was body wrapping, and, if I remember correctly, HTTPie just did it right by default.
Packard_Goose
Thanks for the super concise answer @7stud my Tesla function gets a 200 response now. Also @BrightEyesDavid I was having issues with curl in the zsh shell but all of the commands I was testing worked fine in bash so I’ll likely be using the link you provided me ^.^