IT story/error

[ FastAPI - Ajax ] [ERROR] 422 Unprocessable Entity

자랑이다 2024. 2. 7. 14:52
728x90
반응형

 

422 error 발생

 

 

 

FastAPI 에서 post 만들고

Swagger UI에서 성공

 

ajax 문제인 경우

아래 붉은 글씨 부분을 확인하자.

 

1. back단에서 받고 있는 data 형태와 보내는 형태의 일치 여부

     data : param 으로만 보내고 있다면,

     그리고 FastAPI에서 baseModel을 기반으로한 모델로 받고있다면,

     보내는 파라미터(data)를 JSON.stringify로 감싸서 보내보자

 

2. contentType : "application/json" 이 빠져도 422가 떴다.

     ajax GET을 먼저 만든 후

     POST를 만들었더니 contentType이 누락되어있었다.

     contentType 빠져도 422 error 발생했다.

var param = { "CustID" : Number(document.getElementById("regCustId").value),
                      "Name" : document.getElementById("regName").value }

$.ajax({
          type: "POST",
          url: "https://~~~~~~/users/registerUser",
          dataType: "json",
          data: JSON.stringify(param),
          contentType: "application/json",
          success: function(data){
                    console.log(data);
          }
})

 

 

 

 

FastAPI - post 

from fastapi import APIRouter,Path
from pydantic import BaseModel

router = APIRouter(prefix="/users", tags=["Users"])

class User(BaseModel):   
   CustID: int   
   Name: str


@router.post( path="/registerUser")
async def register_user(user: User):   
     sql_res_str = f"select * from Customer where CustID = {user.CustID}"
     return test.do_sql(sql_res_str)

728x90