核心内容摘要
[特殊字符]FLUX.2-klein-9B-GGUF图像生成新突破,UnSloth助力AI绘画加速!
FastAPI 学习指南FastAPI 是一个现代、快速高性能的 Python Web 框架用于构建 API。
它基于 Python 类型提示支持异步编程并自动生成交互式 API 文档。
以下是学习 FastAPI 的关键内容和方法。
核心概念安装 FastAPI使用 pip 安装 FastAPI 和 UvicornASGI 服务器pipinstallfastapi uvicorn创建第一个 API创建一个简单的 FastAPI 应用fromfastapiimportFastAPI appFastAPI()app.get(/)defread_root():return{Hello:World}运行应用uvicorn main:app --reload路由和请求处理路径参数使用路径参数动态处理请求app.get(/items/{item_id})defread_item(item_id:int):return{item_id:item_id}查询参数处理查询参数app.get(/items/)defread_items(skip:int0,limit:int
:return{skip:skip,limit:limit}请求体和模型使用 Pydantic 模型定义数据模型并验证请求体frompydanticimportBaseModelclassItem(BaseModel):name:strdescription:strNoneprice:floattax:floatNoneapp.post(/items/)defcreate_item(item:Item):returnitem异步支持异步路由FastAPI 支持异步函数app.get(/async/)asyncdefread_async():return{message:Async endpoint}自动文档交互式 API 文档FastAPI 自动生成 Swagger UI 和 ReDoc 文档Swagger UIhttp://
127.
0.
1:8000/docsReDochttp://
127.
0.
1:8000/redoc依赖注入依赖注入系统使用依赖注入管理共享逻辑fromfastapiimportDependsdefcommon_parameters(q:strNone,skip:int0,limit:int
:return{q:q,skip:skip,limit:limit}app.get(/items/)asyncdefread_items(commons:dictDepends(common_parameters)):returncommons中间件添加中间件使用中间件处理请求和响应fromfastapiimportRequestapp.middleware(http)asyncdefadd_process_time_header(request:Request,call_next):responseawaitcall_next(request)response.headers[X-Custom-Header]FastAPIreturnresponse安全性和认证OAuth2 和 JWT实现基于 OAuth2 和 JWT 的认证fromfastapi.securityimportOAuth2PasswordBearer oauth2_schemeOAuth2PasswordBearer(tokenUrltoken)app.get(/users/me)asyncdefread_current_user(token:strDepends(oauth2_scheme)):return{token:token}数据库集成SQLAlchemy 集成使用 SQLAlchemy 连接数据库fromsqlalchemyimportcreate_enginefromsqlalchemy.ext.declarativeimportdeclarative_basefromsqlalchemy.ormimportsessionmaker SQLALCHEMY_DATABASE_URLsqlite:///./test.dbenginecreate_engine(SQLALCHEMY_DATABASE_URL)SessionLocalsessionmaker(autocommitFalse,autoflushFalse,bindengine)Basedeclarative_base()测试和部署测试 FastAPI 应用使用 TestClient 编写测试fromfastapi.testclientimportTestClient clientTestClient(app)deftest_read_root():responseclient.get(/)assertresponse.status_code200部署使用 Uvicorn 或 Gunicorn 部署uvicorn main:app --host
0.
0.