Browse Source

♻ Assume request bodies contain JSON when no Content-Type header is provided (#3456)

pull/3457/head
Sebastián Ramírez 4 years ago
committed by GitHub
parent
commit
edf6b2d61f
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      fastapi/routing.py
  2. 14
      tests/test_tutorial/test_body/test_tutorial001.py

4
fastapi/routing.py

@ -184,7 +184,9 @@ def get_request_handler(
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":

14
tests/test_tutorial/test_body/test_tutorial001.py

@ -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 = {

Loading…
Cancel
Save