FastAPI基础入门

第一个FastAPI

python 复制代码
from fastapi import FastAPI

# 创建API实例
app = FastAPI()

@app.get("/")
async def read_root():
    return {"message": "Hello FastAPI on PyCharm Community"}

路由

python 复制代码
import uvicorn
from fastapi import FastAPI

# 创建API实例
app = FastAPI()

@app.get("/")
async def get_hello():
    return "hello world"

参数简介和路径参数

python 复制代码
import uvicorn
from fastapi import FastAPI

# 创建API实例
app = FastAPI()

# 路径参数
@app.get("/book/{id}")
async def get_book(id: int):
    return {"id":id,"title":f"这是第{id}本书"}

路径参数_Path类型注解

python 复制代码
import uvicorn
from fastapi import FastAPI,Path

# 创建API实例
app = FastAPI()

# 路径参数_path类型注解
@app.get("/school/{id}")
async def get_school(id: int = Path(...,gt=0,lt=100,description="查询学校的接口")):
    return {"id":id,"title":f"这是第{id}个学校"}

# 需求,查找书籍的作者,路径参数 name,长度范围 2 - 10
@app.get("/user/{id}")
async def get_name(name: str = Path(...,min_length=2,max_length=10)):
    return {"msg": f"这是 {name}的信息"}

查询参数和Query类型注解

python 复制代码
import uvicorn
from fastapi import FastAPI,Query

# 创建API实例
app = FastAPI()

# 查询参数和Query类型注解
# http://www.baidu.com?skip=&limit=&
@app.get("/news/news_list")
async def get_news_list(skip: int = Query(0,description="跳过的记录数",lt=100),
                        limit: int = Query(10,description="返回的记录数")
                        ):
    return {"skip":skip,"limit":limit}

请求体参数

python 复制代码
import uvicorn
from fastapi import FastAPI
from pydantic import BaseModel

# 创建API实例
app = FastAPI()

# 请求体参数
# 注册:用户名和密码 -> str
class User(BaseModel):
    username: str
    password: str

@app.post("/register")
async def register(user: User):
    return user

请求体参数-Field类型注解

python 复制代码
import uvicorn
from fastapi import FastAPI
from pydantic import BaseModel,Field

# 创建API实例
app = FastAPI()

# 请求体参数Field类型注解
# 注册:用户名和密码 -> str
class User(BaseModel):
    username: str = Field("张三",min_length=2,max_length=10,description="用户名,长度要求2-10个字")
    password: str = Field(min_length=3,max_length=20)

@app.post("/register")
async def register(user: User):
    return user

响应参数-JSON格式

python 复制代码
import uvicorn
from fastapi import FastAPI

# 创建API实例
app = FastAPI()

# 响应格式-JSON
@app.get("/response_json")
async def get_response_json():
    return {"message":"hello world"}

响应参数-HTML格式

python 复制代码
import uvicorn
from fastapi import FastAPI
from starlette.responses import HTMLResponse, FileResponse

# 创建API实例
app = FastAPI()

# 响应格式-HTML
@app.get("/response_html",response_class=HTMLResponse)
async def get_html():
    return "<h1>这是一级标题</h1>"

响应参数-文件格式

python 复制代码
# 响应格式-文件类型
import uvicorn
from fastapi import FastAPI
from starlette.responses import HTMLResponse, FileResponse

# 创建API实例
app = FastAPI()
# 返回一张图片内容
@app.get("/response_file")
async def get_file():
    path = "./files/1.jpeg"
    return FileResponse(path)

自定义响应格式

python 复制代码
import uvicorn
from fastapi import FastAPI
from pydantic import BaseModel,Field
from starlette.responses import HTMLResponse, FileResponse

# 创建API实例
app = FastAPI()

# 需求:新闻接口 -> 响应数据格式 id、title、content
class News(BaseModel):
    id: int
    title: str
    content: str
@app.post("/news/{id}",response_model=News)
async def get_news(id: int):
   return {
       "id":id,
       "title":f"这是第{id}本书",
       "content":"这是一本好书"
   }

异常响应处理

python 复制代码
import uvicorn
from fastapi import FastAPI,HTTPException

# 创建API实例
app = FastAPI()

# 异常响应处理
# 需求:按id新闻查询 -> 1 - 6
@app.get("/get/exc/news/{id}")
async def get_exc_news(id: int):
    id_list = [1,2,3,4,5,6]
    if id not in id_list:
       raise HTTPException(status_code=404,detail="您查找的新闻不存在")
    return {"id":id}
相关推荐
Maiko Star2 天前
FastAPI 进阶三部曲:中间件、依赖注入与 ORM 实战
python·中间件·fastapi
一个王同学2 天前
从零到一 | CV转多模态大模型 | week19 | 基于 FastAPI 和 vLLM 的多模态大模型部署
人工智能·深度学习·计算机视觉·fastapi·改行学it·vllm
像风一样自由20202 天前
从本地到公网:Windows 下使用 Cloudflare Quick Tunnel 与 Natapp 联调 FastAPI
windows·fastapi
心如鉄补2 天前
FastAPI Agent 函数调用实战:我让 AI 学会了“自己动手查天气“
人工智能·fastapi
ye小杰榨 问鼎中原ZP3 天前
初探:用 FastAPI 搭建你的第一个 AI Agent 接口
人工智能·fastapi
雨辰AI3 天前
全集实战:企业级大模型服务化部署全栈指南|FastAPI 封装 + Nginx 负载均衡 + 高可用架构 从单机到生产一步到位
人工智能·ai·负载均衡·fastapi·ai编程
李昊哲小课4 天前
FastAPI 猫咖预约系统 API
人工智能·python·fastapi
IT小盘4 天前
08-FastAPI加MySQL实现AI对话记录持久化
android·mysql·fastapi
qetfw5 天前
MWU:Vue 3 + FastAPI 的 MaaFramework 跨平台 WebUI 源码
前端·vue.js·python·fastapi·开源项目·效率工具
_Jimmy_5 天前
FastAPI + SQLAlchemy全局事务管理
python·fastapi