Skip to content

Commit

Permalink
♻ Assume request bodies contain JSON when no Content-Type header is p…
Browse files Browse the repository at this point in the history
…rovided (#3456)
  • Loading branch information
tiangolo committed Jul 3, 2021
1 parent 7eb17fc commit edf6b2d
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 1 deletion.
4 changes: 3 additions & 1 deletion fastapi/routing.py
Expand Up @@ -184,7 +184,9 @@ async def app(request: Request) -> Response:
if body_bytes:
json_body: Any = Undefined
content_type_value = request.headers.get("content-type")
if content_type_value:
if not content_type_value:
json_body = await request.json()
else:
message = email.message.Message()
message["content-type"] = content_type_value
if message.get_content_maintype() == "application":
Expand Down
14 changes: 14 additions & 0 deletions tests/test_tutorial/test_body/test_tutorial001.py
Expand Up @@ -229,6 +229,20 @@ def test_geo_json():
assert response.status_code == 200, response.text


def test_no_content_type_is_json():
response = client.post(
"/items/",
data='{"name": "Foo", "price": 50.5}',
)
assert response.status_code == 200, response.text
assert response.json() == {
"name": "Foo",
"description": None,
"price": 50.5,
"tax": None,
}


def test_wrong_headers():
data = '{"name": "Foo", "price": 50.5}'
invalid_dict = {
Expand Down

0 comments on commit edf6b2d

Please sign in to comment.