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

This commit is contained in:
Sebastián Ramírez 2021-07-03 18:25:12 +02:00 committed by GitHub
parent 7eb17fc874
commit edf6b2d61f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 1 deletions

View File

@ -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":

View File

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