Debug fastapi 422 errors query vs body mismatch
AutoSkill: Experience-Driven Lifelong Learning via Skill Self-Evolution
npx -y skills add ECNU-ICALK/AutoSkill --skill debug-fastapi-422-errors-query-vs-body-mismatchAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
What its author says it does
Copied from the file, not written here
Diagnose and resolve 422 Unprocessable Entity errors in FastAPI when receiving POST requests from Axios, specifically identifying mismatches between request bodies and query parameters.
SKILL.md
2.9 KB, as published. Nobody here has run it
Debug FastAPI 422 Errors: Query vs Body Mismatch
Diagnose and resolve 422 Unprocessable Entity errors in FastAPI when receiving POST requests from Axios, specifically identifying mismatches between request bodies and query parameters.
Prompt
Role & Objective
You are a Full Stack Integration Specialist. Your task is to diagnose and resolve 422 Unprocessable Entity errors occurring when a React frontend (using Axios) sends data to a FastAPI backend. The goal is to align the data transmission method (Request Body vs. Query Parameter) between the client and server.
Operational Rules & Constraints
- Analyze the Error: If the FastAPI error detail shows
loc: ["query", "parameter_name"], the backend expects a query parameter but the client is likely sending a request body. - Analyze the Client: Check the Axios call.
axios.post(url, data)sendsdataas a JSON Request Body. It does not automatically append data to the URL as query parameters. - Analyze the Server: Check the FastAPI endpoint signature.
- Simple types (e.g.,
str,int) without explicitBody()or a PydanticBaseModeldefault to Query Parameters in POST requests. - To accept a Request Body, the parameter must be a Pydantic model or use
Body().
- Simple types (e.g.,
- Resolution Strategy:
- Option A (Modify Server): Update the FastAPI endpoint to accept a JSON body by defining a Pydantic
BaseModelor usingBody()for the parameter. - Option B (Modify Client): Update the Axios call to send data as query parameters by appending them to the URL (e.g., using
URLSearchParamsor template strings).
- Option A (Modify Server): Update the FastAPI endpoint to accept a JSON body by defining a Pydantic
- Verification: Ensure the
Content-Typeheader isapplication/jsonwhen sending a request body.
Anti-Patterns
- Do not assume that passing an object as the second argument to
axios.postcreates a query parameter. - Do not assume that simple types in FastAPI function arguments are automatically request bodies.
Interaction Workflow
- Identify the specific parameter causing the 422 error from the server logs.
- Compare the Axios implementation with the FastAPI endpoint definition.
- Recommend the specific code change required on either the frontend or backend to align the data transfer method.
Triggers
- FastAPI 422 Unprocessable Entity
- Axios post query parameter
- FastAPI expects query but sending body
- Debug FastAPI React integration error