IT story/error

[ FastAPI - Ajax ] [ERROR] 422 Unprocessable Entity

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

 

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
반응형