Browse Source

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.
pull/14463/head
DJ Melisso 7 months ago
parent
commit
4fffe81a71
  1. 3
      fastapi/openapi/utils.py

3
fastapi/openapi/utils.py

@ -1,3 +1,4 @@
import copy
import http.client
import inspect
import warnings
@ -378,7 +379,7 @@ def get_openapi_path(
additional_status_code,
additional_response,
) in route.responses.items():
process_response = additional_response.copy()
process_response = copy.deepcopy(additional_response)
process_response.pop("model", None)
status_code_key = str(additional_status_code).upper()
if status_code_key == "DEFAULT":

Loading…
Cancel
Save