mirror of https://github.com/tiangolo/fastapi.git
fix(openapi): avoid duplicated anyOf refs from shared app-level responses
The OpenAPI generator performed only a shallow copy of `additional_response`, causing nested objects (e.g., `content`) to be shared across all routes during openapi generation. When `deep_dict_update()` merged schemas for each route, the shared `anyOf` array accumulated duplicate $ref entries. Switching to a deep copy ensures each route processes an isolated response definition and prevents duplication.
This commit is contained in:
parent
61ffa3eb82
commit
4fffe81a71
|
|
@ -1,3 +1,4 @@
|
||||||
|
import copy
|
||||||
import http.client
|
import http.client
|
||||||
import inspect
|
import inspect
|
||||||
import warnings
|
import warnings
|
||||||
|
|
@ -378,7 +379,7 @@ def get_openapi_path(
|
||||||
additional_status_code,
|
additional_status_code,
|
||||||
additional_response,
|
additional_response,
|
||||||
) in route.responses.items():
|
) in route.responses.items():
|
||||||
process_response = additional_response.copy()
|
process_response = copy.deepcopy(additional_response)
|
||||||
process_response.pop("model", None)
|
process_response.pop("model", None)
|
||||||
status_code_key = str(additional_status_code).upper()
|
status_code_key = str(additional_status_code).upper()
|
||||||
if status_code_key == "DEFAULT":
|
if status_code_key == "DEFAULT":
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue