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
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
17 additions and
1 deletions
-
fastapi/routing.py
-
tests/test_tutorial/test_body/test_tutorial001.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": |
|
|
|
|
|
@ -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 = { |
|
|
|