1.安装
fastapi包:pip install fastapi
uvicorn 启动服务:pip install uvicorn
2.简单使用
from fastapi import FastAPI import uvicorn from pydantic import BaseModel from starlette.middleware.cors import CORSMiddleware # 调用路由文件 from router1 import router as router_api1 app = FastAPI() # 解决跨域 app.add_middleware( CORSMiddleware, # 允许跨域的源列表,例如 ["http://www.example.org"] 等等,["*"] 表示允许任何源 allow_origins=["*"], # 跨域请求是否支持 cookie,默认是 False,如果为 True,allow_origins 必须为具体的源,不可以是 ["*"] allow_credentials=False, # 允许跨域请求的 HTTP 方法列表,默认是 ["GET"] allow_methods=["*"], # 允许跨域请求的 HTTP 请求头列表,默认是 [],可以使用 ["*"] 表示允许所有的请求头 # 当然 Accept、Accept-Language、Content-Language 以及 Content-Type 总之被允许的 allow_headers=["*"], # 可以被浏览器访问的响应头, 默认是 [],一般很少指定 # expose_headers=["*"] # 设定浏览器缓存 CORS 响应的最长时间,单位是秒。默认为 600,一般也很少指定 # max_age=1000 ) # get 无参数 @app.get(/test_1) def test_1(): return {'code':200, 'msg':'成功'} # get 带参数 @app.get(/test_2) def test_2(user_name, password): """ 需要执行的动作 """ retrurn {'code':200, 'msg':'成功'} # BaseModel 类创建了一个数据模型 Item,并将其作为参数传递给路由函数。FastAPI 将自动解析传入的 JSON 数据,并根据模型的定义进行验证 class Item(BaseModel): user_name:str password:str # post @app.post(/test_3): def test_3(item:Item): return {'item': item} # 路径参数 item_id 来接收传递的参数。这种方式适用于将参数直接包含在 URL 路径中。 @app.post("/test/{item_id}") def read_item(item_id: int): # 处理特定项目的逻辑 return {"item_id": item_id} # 将路由加入app中 app.include_router(router_api1, prefix='/router_api1') if __name__ == "__main___": # 启动服务 # 本地访问:127.0.0.1:8088 # 局域网电脑访问:本机IP:8088 uvicorn.run(app, host="0.0.0.0", port=8088)
router1.py
from fastapi import APIRouter, Request
router = APIRouter()
# 定义路由
@router.post("/test")
async def test(request:Request):
# 定义Request参数,接收前端传过来的json数据
data = await request.json()
return {'msg':'测试成功','data':data}