encode / httpx

A next generation HTTP client for Python. 🦋

Home Page:https://www.python-httpx.org/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Stricter type checking on request data.

tomchristie opened this issue · comments

  • 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.)

👆🏼 Hmmm... still experimenting with polar here. fund.