Stricter type checking on request data.
tomchristie opened this issue · comments
Tom Christie commented
- Initially raised as discussion #3118
Here's a gnarly thing...
data = {"key": {"this": "ain't json, buddy"}}
httpx.post("https://www.example.com", data=data)
Current behavior is that we'll coerce the value to a string, because we're overly lenient on the types...
>>> r = httpx.post("https://www.example.com", data=data)
>>> r.request.content
b'key=%7B%27this%27%3A+%22ain%27t+json%2C+buddy%22%7D'
Ideally we ought to raise a type error instead...
TypeError: Request data values must be str, int, float, bool, or None. Got type 'dict' for key 'key'.
(For comparison requests
also leniently allows this, and also ends up sending unexpected data.)
Tom Christie commented
👆🏼 Hmmm... still experimenting with polar here. fund
.