FastAPI 响应体模型及校验

  • response_model 响应模型

  • response_model_exclude_unset=True 不传递,不返回默认值

  • status_code 响应状态吗

# coding: utf8

from fastapi import FastAPI,Body,status
from pydantic import BaseModel
from typing import Optional

app = FastAPI()


class UserIn(BaseModel):
    username: str
    password: str = Body(..., min_length=6, max_length=100)
    email: str
    full_name: Optional[str] = None

class UserOut(BaseModel):
    username: str
    email: str
    full_name: Optional[str] = None


@app.post('/user', response_model=UserOut,  response_model_exclude_unset=True, status_code=status.HTTP_201_CREATED)
async def create_user(user: UserIn):
    return user

# # 启动: uvicorn main:app --reload
  • http的状态码

    • 100 及以上状态码用于「消息」响应。你很少直接使用它们。具有这些状态代码的响应不能带有响应体。

    • 200 及以上状态码用于「成功」响应。这些是你最常使用的。

    • 200 是默认状态代码,它表示一切「正常」。

    • 201 「已创建」。它通常在数据库中创建了一条新记录后使用。

    • 204 「无内容」。此响应在没有内容返回给客户端时使用,因此该响应不能包含响应体。

    • 300 用于「重定向」。具有这些状态码的响应可能有或者可能没有响应体,

    • 304 重定向, 该响应不得含有响应体。

    • 400 客户端的一般错误

    • 404 用于「未找到」响应。

    • 500 及以上状态码用于服务器端错误。你几乎永远不会直接使用它们。当你的应用程序代码或服务器中的某些部分出现问题时,它将自动返回这些状态代码之一。

Last updated