滨城网站开发,自己公司产品网站的好处,零食销售网站开发与设计,免费造网站安装Fast API#xff1a;https://fastapi.tiangolo.com/zh/
FastAPI的优点#xff1a; 高性能 FastAPI 基于 ASGI#xff08;异步服务器网关接口#xff09;和 Starlette 框架#xff0c;支持异步编程#xff0c;能够高效处理大量并发请求。其性能接近 Node.js 和 Gohttps://fastapi.tiangolo.com/zh/
FastAPI的优点 高性能 FastAPI 基于 ASGI异步服务器网关接口和 Starlette 框架支持异步编程能够高效处理大量并发请求。其性能接近 Node.js 和 Go比传统的 Python 框架如 Django 和 Flask快 3-5 倍特别适合高并发场景。 自动生成 API 文档 FastAPI 能够根据代码中的类型提示和注解自动生成交互式 API 文档如 Swagger UI 和 ReDoc。这不仅减少了手动编写文档的工作量还方便了开发和调试。 类型提示与数据验证 FastAPI 利用 Python 的类型提示机制和 Pydantic 库提供强大的数据验证和序列化功能。这确保了输入数据的正确性减少了运行时错误并提高了代码的可读性和可维护性。 异步支持 FastAPI 原生支持异步编程async/await能够高效处理 I/O 密集型任务如数据库查询、API 调用特别适合实时数据处理和高并发场景。 易于使用和学习 FastAPI 的设计注重用户体验代码简洁易懂支持代码自动补全和编辑器提示降低了学习曲线提高了开发效率。 安全性 FastAPI 内置支持多种安全机制如 OAuth2、JWT 等认证方式并提供 HTTPS 支持确保 API 的安全性。 Pycharm中创建FastAPI项目 先导入FastAPI用来定义API FastAPI 是一个 Python 框架用来创建 Web API应用程序接口。你可以把它想象成一个工具箱用来搭建一个可以接收请求并返回响应的服务器。
from fastapi import FastAPI
创建FastAPI实例 app 是整个应用的核心它会处理所有的请求和响应。你可以把它看作一个“服务器”它会监听用户的请求并根据代码的逻辑返回相应的结果。
app FastAPI()
装饰器 这是一个装饰器用来定义一个路由route。路由是用户访问 API 的路径。 app.get(/) 表示当用户访问网站的根路径即 /时会触发下面的函数。 / 是默认的首页路径比如如果你的网站是 http://example.com那么访问 http://example.com/ 就会触发这个路由。
app.get(/)异步函数 这是一个异步函数async 表示异步操作名字叫 root。 异步操作是 FastAPI 的一个特性它可以让程序在等待某些操作比如数据库查询时同时处理其他请求从而提高性能。 这个函数的作用是处理上面定义的 / 路由的请求。
async def root():
函数的返回值 这行代码是函数的返回值。 它返回一个字典{message: Hello World}FastAPI 会自动将这个字典转换为 JSON 格式一种常见的数据传输格式。 当用户访问 / 路径时浏览器会收到一个 JSON 响应{message: Hello World}。
return {message: Hello World}
完整代码为
from fastapi import FastAPI # 导⼊FastAPI⽤于定义API
app FastAPI() # 创建FastAPI实例
app.get(/)
async def root():return {message: Hello World}运行应用打开终端输入uvicorn main:app --reload
方式一终端输入命令启动 main是程序的名称app 是实例化的名称uvicorn main:app --reload 打开浏览器中在浏览器中输入终端给的网址http://127.0.0.1:8000你应该能够看到 FastAPI 自动生成的交互式文档并在根路径 (/) 返回的 JSON 响应。 方式二
if __name__ __main__:import uvicornprint(__name__)uvicorn.run(run:app, host127.0.0.1, port8080, reloadTrue)路径操作 union类型 ⽤于⽀持多种数据类型的参数注解 from typing import Union # 导⼊Union, ⽤于定义可选类型
from fastapi import FastAPI # 导⼊FastAPI,⽤于构建RESTful API app.gte(/items/item_id)
def read_item(x:int,y:union[str,none]none):print(x:x,y:y) FastAPI 交互式 API 文档 from fastapi import FastAPI # 引⼊FastAPI类,⽤于创建⼀个应⽤
import uvicorn # 引⼊uvicorn,⽤于启动服务
from typing import Union # 引⼊Union类⽤于类型注解
from pydantic import BaseModel # 引⼊pydantic类⽤于定义数据结构
app FastAPI() # 创建⼀个应⽤,app是⼀个FastAPI实例
class Item(BaseModel): # 定义⼀个Item类继承⾃BaseModel⽤于定义请求体中的数据结构# 定义⼀个name属性类型为strname: str# 定义⼀个price属性类型为floatprice: float# 定义⼀个is_offer属性类型为Union[bool, None]默认为Noneis_offer: Union[bool, None] None
app.get(/) # 装饰器表示定义⼀个根路径的get请求
# 定义⼀个根路径的get请求,返回⼀个字典,键值分别为Hello和World
# async 表示异步请求,可以提⾼性能
# 测试访问http://127.0.0.1:8000/
async def read_root():return {Hello: World}
app.get(/items/{item_id})
# 定义⼀个路径参数为item_id的get请求,返回⼀个字典,键值分别为item_id和q
# Union[str, None] 表示q可以为str类型或者None类型默认为None
# 测试访问http://127.0.0.1:8000/items/3?qabc
async def read_item(item_id: int, q: Union[str, None] None):return {item_id: item_id, q: q}
app.put(/items/{item_id})
# 测试访问http://127.0.0.1:8000/items/3
async def update_item(item_id: int, item: Item):# 定义⼀个路径参数为item_id的put请求,返回⼀个字典,键值分别为item_name和item_idreturn {item_name: item.name, item_id: item_id}
if __name__ __main__:# 启停⽅式# 1.⽅式1指令式# 服务器启动指令 uvicorn main:app --reload# fastDemo1:app 表示main.py⽂件中的app实例# 服务器停⽌指令 ctrlc# 2.⽅式2界⾯式# ⿏标右键启动----》run main.py# 界⾯右上⻆的停⽌按钮# 启动服务,host指定主机地址,port指定端⼝号,reloadTrue表示当代码发⽣变化时,⾃动重启服务# main:app---- 表示main.py⽂件中的app实例uvicorn.run(fastAPIDemo3:app, host127.0.0.1, port8000, reloadTr
ue) 代码块作用依赖导入引入框架、服务器、类型注解和数据验证库应用实例化创建FastAPI核心对象Pydantic模型定义请求体数据结构并实现自动校验路由装饰器绑定HTTP方法与URL路径到处理函数请求处理函数实现业务逻辑并返回响应服务器启动配置ASGI服务器参数并启动服务 from fastapi import FastAPI # 核心框架类
import uvicorn # ASGI服务器
from typing import Union # 类型注解工具
from pydantic import BaseModel # 数据验证库 FastAPI构建API的核心类。uvicorn用于启动高性能ASGI服务器。Union定义联合类型如Union[str, None]。BaseModel创建数据模型的基类用于请求体校验。
app FastAPI() # 创建FastAPI应用实例
核心对象所有路由和配置的载体。自动注入后续装饰器通过app.get等绑定路由。
4. 路由与请求处理
(1) 根路径GET请求
class Item(BaseModel):name: str # 必填字段类型为字符串price: float # 必填字段类型为浮点数is_offer: Union[bool, None] None # 可选字段默认为None
作用定义请求体的数据结构。校验规则 name和price为必填字段类型严格校验。is_offer为可选字段接受bool或None。 自动文档模型结构会显示在Swagger UI中。
(2) 带路径参数的GET请求
app.get(/)
async def read_root():return {Hello: World}
路径http://localhost:8000/行为返回固定JSON响应。异步支持async声明使函数支持异步处理。
(3) 带请求体的PUT请求
app.put(/items/{item_id})
async def update_item(item_id: int, item: Item):return {item_name: item.name, item_id: item_id}
请求体校验item参数必须是符合Item模型的JSON。自动解析FastAPI将JSON请求体转换为Item对象。
if __name__ __main__:uvicorn.run(fastAPIDemo3:app, host127.0.0.1, port8000, reloadTrue)
模块定位fastAPIDemo3:app表示fastAPIDemo3.py文件中的app实例。参数说明 host绑定到本地回环地址。port监听8000端口。reload开发模式下自动重载代码变更。 启动方式 直接运行脚本python main.py。命令行指令uvicorn main:app --reload。 文章转载自: http://www.morning.rtlrz.cn.gov.cn.rtlrz.cn http://www.morning.krywy.cn.gov.cn.krywy.cn http://www.morning.vtbtje.cn.gov.cn.vtbtje.cn http://www.morning.ysbrz.cn.gov.cn.ysbrz.cn http://www.morning.bfjtp.cn.gov.cn.bfjtp.cn http://www.morning.wdprz.cn.gov.cn.wdprz.cn http://www.morning.qmzhy.cn.gov.cn.qmzhy.cn http://www.morning.rkqkb.cn.gov.cn.rkqkb.cn http://www.morning.skdrp.cn.gov.cn.skdrp.cn http://www.morning.tldfp.cn.gov.cn.tldfp.cn http://www.morning.pflry.cn.gov.cn.pflry.cn http://www.morning.yubkwd.cn.gov.cn.yubkwd.cn http://www.morning.sqgqh.cn.gov.cn.sqgqh.cn http://www.morning.prlgn.cn.gov.cn.prlgn.cn http://www.morning.mhdwp.cn.gov.cn.mhdwp.cn http://www.morning.htbbp.cn.gov.cn.htbbp.cn http://www.morning.rnqbn.cn.gov.cn.rnqbn.cn http://www.morning.rgrdd.cn.gov.cn.rgrdd.cn http://www.morning.hzryl.cn.gov.cn.hzryl.cn http://www.morning.wynqg.cn.gov.cn.wynqg.cn http://www.morning.hghhy.cn.gov.cn.hghhy.cn http://www.morning.rwzkp.cn.gov.cn.rwzkp.cn http://www.morning.pmdzd.cn.gov.cn.pmdzd.cn http://www.morning.lizpw.com.gov.cn.lizpw.com http://www.morning.jpbpc.cn.gov.cn.jpbpc.cn http://www.morning.fhxrb.cn.gov.cn.fhxrb.cn http://www.morning.fcwb.cn.gov.cn.fcwb.cn http://www.morning.mnkhk.cn.gov.cn.mnkhk.cn http://www.morning.dnpft.cn.gov.cn.dnpft.cn http://www.morning.xdfkrd.cn.gov.cn.xdfkrd.cn http://www.morning.lfcnj.cn.gov.cn.lfcnj.cn http://www.morning.zhnyj.cn.gov.cn.zhnyj.cn http://www.morning.mxhys.cn.gov.cn.mxhys.cn http://www.morning.mmynk.cn.gov.cn.mmynk.cn http://www.morning.dhqzc.cn.gov.cn.dhqzc.cn http://www.morning.ypzr.cn.gov.cn.ypzr.cn http://www.morning.ggcjf.cn.gov.cn.ggcjf.cn http://www.morning.rgnq.cn.gov.cn.rgnq.cn http://www.morning.kgslc.cn.gov.cn.kgslc.cn http://www.morning.rnygs.cn.gov.cn.rnygs.cn http://www.morning.lxctl.cn.gov.cn.lxctl.cn http://www.morning.mwqbp.cn.gov.cn.mwqbp.cn http://www.morning.rgrdd.cn.gov.cn.rgrdd.cn http://www.morning.bnbzd.cn.gov.cn.bnbzd.cn http://www.morning.wfwqr.cn.gov.cn.wfwqr.cn http://www.morning.jlgjn.cn.gov.cn.jlgjn.cn http://www.morning.mdjzydr.com.gov.cn.mdjzydr.com http://www.morning.ctsjq.cn.gov.cn.ctsjq.cn http://www.morning.gpxbc.cn.gov.cn.gpxbc.cn http://www.morning.xkqjw.cn.gov.cn.xkqjw.cn http://www.morning.fssjw.cn.gov.cn.fssjw.cn http://www.morning.pzbqm.cn.gov.cn.pzbqm.cn http://www.morning.ymqrc.cn.gov.cn.ymqrc.cn http://www.morning.ptslx.cn.gov.cn.ptslx.cn http://www.morning.jmllh.cn.gov.cn.jmllh.cn http://www.morning.clpdm.cn.gov.cn.clpdm.cn http://www.morning.rkxdp.cn.gov.cn.rkxdp.cn http://www.morning.nzsx.cn.gov.cn.nzsx.cn http://www.morning.kbntl.cn.gov.cn.kbntl.cn http://www.morning.cwrnr.cn.gov.cn.cwrnr.cn http://www.morning.rfxg.cn.gov.cn.rfxg.cn http://www.morning.smmrm.cn.gov.cn.smmrm.cn http://www.morning.kqbwr.cn.gov.cn.kqbwr.cn http://www.morning.jrtjc.cn.gov.cn.jrtjc.cn http://www.morning.klcdt.cn.gov.cn.klcdt.cn http://www.morning.xxwfq.cn.gov.cn.xxwfq.cn http://www.morning.mhmdx.cn.gov.cn.mhmdx.cn http://www.morning.yqwrj.cn.gov.cn.yqwrj.cn http://www.morning.hqwcd.cn.gov.cn.hqwcd.cn http://www.morning.qkqzm.cn.gov.cn.qkqzm.cn http://www.morning.lmrcq.cn.gov.cn.lmrcq.cn http://www.morning.tqsmc.cn.gov.cn.tqsmc.cn http://www.morning.lgnbr.cn.gov.cn.lgnbr.cn http://www.morning.mtcnl.cn.gov.cn.mtcnl.cn http://www.morning.gbnsq.cn.gov.cn.gbnsq.cn http://www.morning.hblkq.cn.gov.cn.hblkq.cn http://www.morning.vvbsxm.cn.gov.cn.vvbsxm.cn http://www.morning.lrprj.cn.gov.cn.lrprj.cn http://www.morning.xhxsr.cn.gov.cn.xhxsr.cn http://www.morning.hydkd.cn.gov.cn.hydkd.cn