Browse Source

Fix _build_response_args status_code priority: handler-set value wins over route decorator

pull/15699/head
sadreammm 1 month ago
parent
commit
1d908dc197
  1. 11
      fastapi/routing.py

11
fastapi/routing.py

@ -336,12 +336,13 @@ def _build_response_args(
response_args: dict[str, Any] = {
"background": solved_result.background_tasks,
}
# If status_code was set, use it, otherwise use the default from the
# response class, in the case of redirect it's 307
if status_code is not None:
response_args["status_code"] = status_code
elif solved_result.response.status_code:
# If the response object has a status_code set (e.g. inside a dependency
# or path operation), it takes priority over the route-level status_code.
# Otherwise, use the route-level status_code if provided.
if solved_result.response.status_code:
response_args["status_code"] = solved_result.response.status_code
elif status_code is not None:
response_args["status_code"] = status_code
return response_args

Loading…
Cancel
Save