diff --git a/fastapi/params.py b/fastapi/params.py index b40944dba..5f5a5fe43 100644 --- a/fastapi/params.py +++ b/fastapi/params.py @@ -560,6 +560,12 @@ class Body(FieldInfo): ) current_json_schema_extra = json_schema_extra or extra if PYDANTIC_V2: + if serialization_alias in (_Unset, None) and isinstance(alias, str): + serialization_alias = alias + + if validation_alias in (_Unset, None): + validation_alias = alias + kwargs.update( { "annotation": annotation, diff --git a/tests/test_openapi_form_alias.py b/tests/test_openapi_form_alias.py new file mode 100644 index 000000000..8af2373c0 --- /dev/null +++ b/tests/test_openapi_form_alias.py @@ -0,0 +1,28 @@ +from fastapi import FastAPI, Form +from fastapi.testclient import TestClient + +app = FastAPI() + + +@app.post("/") +def route_with_form(form_param: str = Form(alias="aliased-field")): + return {} + + +client = TestClient(app) + + +def test_get_route(): + response = client.post("/", data={"aliased-field": "Hello, World!"}) + assert response.status_code == 200, response.text + assert response.json() == {} + + +def test_openapi(): + response = client.get("/openapi.json") + assert response.status_code == 200, response.text + form_properties = ( + response.json() + ["components"]["schemas"]["Body_route_with_form__post"]["properties"] + ) + assert "aliased-field" in form_properties