You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FastAPI注册接口出现422 Unprocessable Entity错误求助

FastAPI 422错误排查与修复

核心问题:请求格式不匹配

你的/register接口通过Form(...)声明接收表单格式参数,但Postman发送的是JSON格式的请求体,FastAPI无法解析该格式,直接返回422错误。

  • 修复方案二选一:
    1. 调整Postman请求方式:切换到Body标签下的form-data选项,添加username和password键值对发送
    2. 修改接口参数为接收JSON:用UsersSchema作为请求模型,去掉Form依赖:
      @app.post("/register")
      async def register(user: UsersSchema, conn: Connection = Depends(get_db)):
          # 使用user.username和user.password获取参数
      

其他导致异常的问题

1. CORS中间件限制POST请求

当前CORSMiddleware仅允许GET方法,POST请求会被拦截,加剧请求异常:

app.add_middleware(
    CORSMiddleware,
    allow_origins=origins,
    allow_credentials=True,
    allow_methods=['GET', 'POST'],  # 新增POST方法
    allow_headers=['Content-Type','application/json']
)

2. 数据库操作代码错误

  • conn.execute(print(...))完全无效:print返回None,等于让数据库执行空指令,正确写法是直接传递SQL(推荐参数化查询避免SQL注入):
    from sqlalchemy import text
    
    # 插入数据(id自增,无需手动传入)
    conn.execute(text("INSERT INTO users (username, password) VALUES (:username, :password)"),
                 {"username": username, "password": password})
    conn.commit()  # 必须提交事务才会写入数据库
    
    # 查询示例
    result = conn.execute(text("SELECT * FROM users WHERE username = :username"), {"username": username})
    new_user = result.fetchone()
    
  • 类型标注错误:get_db返回的是数据库连接(Connection类型),但接口参数标注为LegacyCursorResult,需修正:
    from sqlalchemy.engine import Connection
    
    async def register(username: str = Form(...), password: str = Form(...), conn: Connection = Depends(get_db)):
    

3. Response Model设置不合理

response_model=List[UsersSchema]要求返回用户列表,但注册接口应返回单个新用户或成功状态,该设置会导致返回数据不匹配:

  • 若需返回新用户,改为response_model=UsersSchema并返回查询到的新用户;或直接返回状态提示:
    @app.post("/register")
    async def register(...):
        # 插入逻辑...
        return {"status": "success", "message": "注册成功"}
    

额外安全建议

  • 禁止明文存储密码,使用passlib等库对密码进行哈希加密后再存入数据库
  • 优先使用SQLAlchemy ORM操作(如db.add(Users(username=xxx, password=xxx)))代替原生SQL,降低出错概率与安全风险

内容的提问来源于stack exchange,提问作者Pratham Sampat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 07:15:32